Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Czy da sie wykonac jedno zapytanie?
prohol
post
Post #1





Grupa: Zarejestrowani
Postów: 56
Pomógł: 2
Dołączył: 20.07.2007

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


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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?
Go to the top of the page
+Quote Post
Mchl
post
Post #3





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


Inna sprawa, że (prawdopodobnie) lepiej było by tabele połączyć relacją wiele do wielu.
Go to the top of the page
+Quote Post
prohol
post
Post #4





Grupa: Zarejestrowani
Postów: 56
Pomógł: 2
Dołączył: 20.07.2007

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


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.

Ten post edytował prohol 23.06.2010, 06:55:22
Go to the top of the page
+Quote Post
cojack
post
Post #5





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


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.
Go to the top of the page
+Quote Post
prohol
post
Post #6





Grupa: Zarejestrowani
Postów: 56
Pomógł: 2
Dołączył: 20.07.2007

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


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...
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: 23.08.2025 - 17:08