Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czy da sie wykonac jedno zapytanie?
Forum PHP.pl > Forum > Bazy danych > MySQL
prohol
Mam tabele produkty:

id, product_name,category1_id,category2_id,category3_id

oraz kategorie:

id, category_id, category_name

Oczywiscie category1_id, category2_id oraz category3_id z tabeli produkty odpowiadaja category_id z tabeli kategorie.

I czy jest mozliwe za pomoca jednego polecnie uzyskac wynik w postaci:

nazwa_produktu,nazwa_kategori1,nazwa_kategori2,nazwa_kategori3

Oczywiscie czy optymalne jest tworzenie jednego zapytania czy lepiej rozbic to na 3 zapytania?
phpion
Dołączając tabelę kategorii (musisz ją dołączyć 3 razy) nadawaj jej alias np.
  1. ...LEFT JOIN categories AS cat1 ON (cat1.id = products.category1_id)...

Czy rozbijać to na 3 zapytania? Nie, po co?
Mchl
Inna sprawa, że (prawdopodobnie) lepiej było by tabele połączyć relacją wiele do wielu.
prohol
Cytat(phpion @ 22.06.2010, 14:51:08 ) *
Dołączając tabelę kategorii (musisz ją dołączyć 3 razy) nadawaj jej alias np.
  1. ...LEFT JOIN categories AS cat1 ON (cat1.id = products.category1_id)...


Dziekuje za informacje. Dziala wysmienicie!

Cytat(phpion @ 22.06.2010, 14:51:08 ) *
Czy rozbijać to na 3 zapytania? Nie, po co?


Zastanawialem sie nad wydajnoscia takiego potrojnego laczenia v 3 osobne zapytania.
cojack
Mchl dobrze napisał, najlepiej byłoby zrobić relacje many-to-many, czyli masz osobno tabele z kategoriami, osobno tabele z produktami i osobno tabele łącząca produkt z kategoriami, wtedy możesz pobrać jednym zapytaniem nazwy kategorii do których produkt należy bez żadnych większych fanaberii.
prohol
Cytat(cojack @ 23.06.2010, 22:24:19 ) *
Mchl dobrze napisał, najlepiej byłoby zrobić relacje many-to-many, czyli masz osobno tabele z kategoriami, osobno tabele z produktami i osobno tabele łącząca produkt z kategoriami, wtedy możesz pobrać jednym zapytaniem nazwy kategorii do których produkt należy bez żadnych większych fanaberii.


Jako ze to nie ja projektowalem tabele itp to musze sie dostosowac do tego co mam. Oczywiscie jak bym to robil to bym zrobil tak jak piszesz - 3 powiazane tabele najlepiej oparte na InnoDB i powiazane kluczami obcymi. Niestety tu mam dodatkowo MyIsam...
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.