![]() |
![]() |
![]()
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 ![]() 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 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 04:21 |