Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Pobieranie niezduplikowanych rekordów
Forum PHP.pl > Forum > Przedszkole
miniol
Mam dwie tabele:

Kod
Kategoria
=========
1. id_kategorii
2. id_produktu
3. nazwa

Produkt
=========
1. id_produktu
2. nazwa
3. cena
4. podatek


Jeden produkt może być w wielu kategoriach.

Jakie dać zapytanie, aby pobrać produkt tylko raz z tylko jedną kategorią.
Obecnie pobiera mi się tak:
  1. SELECT `kategoria`.`id_kategorii`, `kategoria`.`id_produktu`, `kategoria`.`nazwa`, `produkt`.`id_produktu`, `produkt`.`nazwa`, `produkt`.`cena`, `produkt`.`podatek`, FROM `kategoria` INNER JOIN `produkt` ON `kategoria`.`id_produktu` = `produkt`.`id_produktu`;


Wyświetla mi wynik:
Kod
1   3   albumy   3   Duży album   88.50   0.23
2   3   inne   3   Duży album   88.50   0.23
3   3   przewdniki   3   Duży album   88.50   0.23
1   4   albumy   4   fajna_rzecz   8.50   0.23
2   4   inne   4   fajna_rzecz   8.50   0.23
3   4   przewdniki   4   fajna_rzecz   8.50   0.23


Jak uzyskać wynik gdzie każdy produkt będzie miał tylko jedną kategorię czyli:
Kod
1   3   albumy   3   Duży album   88.50   0.23
1   4   albumy   3   fajna_rzecz   8.50   0.23


Próbowałem polecenia distinct, ale to działa tylko w przypadku identycznych rekordów. A ja każdy rekord mam inny.
phpion
Pogrupuj (GROUP BY) rekordy po kateogria.id_produktu.
GoOx
użyj WHERE
  1. SELECT `kategoria`.`id_kategorii`, `kategoria`.`id_produktu`, `kategoria`.`nazwa`, `produkt`.`id_produktu`, `produkt`.`nazwa`, `produkt`.`cena`, `produkt`.`podatek`, FROM `kategoria` INNER JOIN `produkt` ON `kategoria`.`id_produktu` = `produkt`.`id_produktu` WHERE id_produktu='$jakaś_zmienna';

miniol
Cytat(phpion @ 23.01.2012, 15:09:31 ) *
Pogrupuj (GROUP BY) rekordy po kateogria.id_produktu.

Dokładnie tego szukałem! Dzięki!




Cytat(GoOx @ 23.01.2012, 15:09:37 ) *
użyj WHERE
  1. SELECT `kategoria`.`id_kategorii`, `kategoria`.`id_produktu`, `kategoria`.`nazwa`, `produkt`.`id_produktu`, `produkt`.`nazwa`, `produkt`.`cena`, `produkt`.`podatek`, FROM `kategoria` INNER JOIN `produkt` ON `kategoria`.`id_produktu` = `produkt`.`id_produktu` WHERE id_produktu='$jakaś_zmienna';

Problem w tym, że takiego warunku właśnie nie mogłem wymyślić, bo nie mogłem przewidzieć w jakiej kategorii są produkty.Zrobienie pętli też się mija z celem, bo przy kilkunastu tysiącach już będzie to spore obciążenie.
W przykładnie jaki podałem, oba produkty miały te same kategorie, więc mógłbym użyć warunku WHERE id_kategorii=1. Tylko, że jeśli produkt nie jest w kategorii albumy to zostanie pominięty, a tego bym nie chciał.
Grupowanie to właśnie to czego potrzebowałem!

Temat wyczerpany smile.gif
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.