Manwe89
30.03.2009, 09:17:46
Mam tabele w bazie danch z polami: id, user_id, typ, use_id, nazwa, data, koszt. No i chciał, nie chciał mam masę wspiów które różnią się wartością pola data. Jak skontruowac zapytanie ktore usunie wpisy, które mają to samo: id, user_id, typ, use_id, nazwa, koszt?
erix
30.03.2009, 12:19:09
SELECT ... DISTINCT ... INTO do tabeli tymczasowej, TRUNCATE na pierwotną i kopiujesz dane z powrotem. Jeśli nie chcesz robić tabel tymczasowych, robisz podzapytanie w klauzuli WHERE.
Manwe89
30.03.2009, 13:50:18
caly czas zastanawiam sie nad warunkiem where
erix
30.03.2009, 17:57:55
To też musiałoby być na podzapytanie; z tym, że na GROUP BY unikalna_kolumna HAVING COUNT(unikalna_kolumna)>1 i będziesz miał identyfikatory zduplikowanych rekordów.
dr_bonzo
30.03.2009, 19:36:40
A
SELECT id, user_id, typ, use_id, nazwa, koszt, DATA FROM tabelka HAVING DATA = MAX( DATA )
GROUP BY user_id, typ, use_id, nazwa, koszt
- chyba przejdzie
i jakim cudem ID ci sie powtarza?
Manwe89
31.03.2009, 09:07:49
sorki

id mi sie nie powtarza. Jest kluczem
dr_bonzo
31.03.2009, 10:20:13
No i popraw sobie dodawanie, edycje danych - skoro tyle ci sie rekordow powtarza.
Manwe89
31.03.2009, 11:56:10
w tym przypadku duzo lepszym rozwiazaniem jest czyszczenie co jakis czas logow zdublowanych niz wprowadzanie dodatkowych warunkow podczas wykonywania zapytania, poniewaz proces weryfikacyjny, ktroy udostepnia zawartosc i tak jest juz dosyc rozbudowany. ale chyba jednak nie pozostanie mi nic innego jak dodatkowe rozbudowanie pierwszej czesci

dzieki za pomoc
guitarnet.pl
9.04.2009, 17:41:08
tymczasowa tabela bez powtarzajacych sie rekordow
CREATE TABLE products_categories_temp AS SELECT * FROM products_categories GROUP BY powtarzajacesiepole
TRUNCATE products_categories
INSERT INTO products_categories SELECT * FROM products_categories_temp
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.