Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> "dziwny" auto increment na moim serwerze mysql
pointman
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 27.02.2005

Ostrzeżenie: (0%)
-----


Spotkał się ktoś z takim czymś w autoinkrementacji MySQL ?
np. mamy tabele z polem ID autoinkrementującym dodajemy do tabeli 5 rekordów(mają one kolejne numery Id 1,2,3,4,5) po czym je usuwamy. Dodajemy jeden rekord (pole ID ma wartość 6 a w tabeli jest jeden rekord). Usuwamy go(tabela jest pusta) i resetujemy komputer ....
Po restarcie serwera dodajemy jeden rekord i jego ID ma wartość 1 zamiast 7 , gdybyśmy nie zresetowali komputer to wartość była by normalnie 7.

Serwer to MySQL 4.1.7

Jakieś pomysły ?
tabela

CREATE TABLE `produkty` (
`produkt_id` int(10) unsigned NOT NULL auto_increment,
`kategoria_id` int(10) unsigned NOT NULL default '0',
`obrazek` varchar(25) NOT NULL default '',
`miniaturka` varchar(25) NOT NULL default '',
`nazwa_produktu` varchar(40) NOT NULL default '',
`producent` varchar(20) NOT NULL default '',
`skala` varchar(6) NOT NULL default '',
`opis` text NOT NULL,
`ilosc` int(10) unsigned NOT NULL default '0',
`cena` float(6,2) NOT NULL default '0.00',
`data_dodania` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`produkt_id`),
KEY `kategoria_id` (`kategoria_id`)
)


druga tabela to produkty zamowione


CREATE TABLE `produkty_zamowione` (
`zamowienie_id` int(10) unsigned NOT NULL default '0',
`produkt_id` int(10) unsigned NOT NULL default '0',
`nazwa_produktu` char(40) NOT NULL default '',
`producent` char(20) NOT NULL default '',
`skala` char(6) NOT NULL default '',
`ilosc` int(10) unsigned NOT NULL default '0',
`cena_zakupu` float(6,2) NOT NULL default '0.00',
KEY `zamowienie_id` (`zamowienie_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


Chce zrobić Top 10 najlepiej sprzedających się produktów
wykonuje zapytanie które mi pomoze odszukać najlepiej sprzedające się produkty:

SELECT produkt_id, SUM(ilosc)
FROM produkty_zamowione
GROUP BY produkt_id

i sprawdzam pozniej czy przypadkiem dany produkt nie jest skasowany,
jeżeli nie jest(istnieje produkt_id w tabeli produkty), to wlasnie wyswietlany jest w grupie najlepiej sprzedajacych sie.
I tak dziala na serwerze w necie i u mnie dopuki go nie zresetuje bo :
np dodaje 3 produkty o kolejnych numerach produkt_id =1,2,3
klient kupuje wszystkie . W tabeli produkty zamówione pojawiaja sie te 3 pozycje skojarzone z zamowieniem, po jakims czasie usuwam te trzy produkty, resetuje serwer, dodaje nastempny produkt ktory zamiast produkt_id=4 ma 1 i on pojawia mi sie w bestsellerach (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif)

aha

w tabeli produkty zamowione istnieja pola nadmiarowe (nazwa_produktu, producent,skala) na wypadek gdyby administrator usunal dany produkt - jego parametry musza byc pokazywane w historii zamowien uzytkownikow nawet po skasowaniu danego produktu z tabeli produkty, czy taka uzasadniana nadmiarowość jest dopuszczalna?
Te pola :
`nazwa_produktu` char(40) NOT NULL default '',
`producent` char(20) NOT NULL default '',
`skala` char(6) NOT NULL default '',

Ten post edytował pointman 27.02.2005, 23:50:22
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
tts
post
Post #2





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 14.02.2005

Ostrzeżenie: (0%)
-----


a na czym polega problem? ma byc id ustawione na 7 czy resetowane do 1?
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #3





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




To jest po prostu unikalny numer. Zawsze będzie po prostu wyższy od poprzednio wpisanego. Jest to zatem naturalne. Najlepiej dopisz jakieś dodatkowe pole, które będzie odpowioadało za oznaczenie liczby porządkowej.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 14:17