Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Pobranie powiązanych rekordów i ich powiązanych, Zapytanie w zapytaniu
nyfko
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 29.07.2014

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


Witam. By wyjaśnić problem przedstawię wymyśloną sytuację jako przykład.

Mam np. tabelę "rtv" z kolumnami ID, nazwa, powiązanie z wierszami:

Kod
ID     nazwa               powiazanie
--------------------------------------
1   Komputer PC                NULL
2   Wieża stereo               NULL
3   Smartphone                 NULL
4   Karta graficzna            1
5   Słuchawka bluetooth        3
6   Telewizor                  NULL
7   Dysk twardy                1
8   Kabel SATA do dysku        7



I teraz chcę sprawdzić sprzęty powiązane z ID 1 czyli z "Komputer PC".
W takim wypadku zrobiłbym zapytanie

  1. SELECT * FROM rtv WHERE powiazanie = 1


To zwróciło by mi:
Kod
4   Karta graficzna              1
7   Dysk twardy                  1


Ja jednak chciałbym sprawdzić poziom niżej, a więc by zwróciło by mi również sprzęty powiązane z tymi powiązanymi, czyli "Kabel SATA" który jest powiązany z "Dysk Twardy" który jest powiązany z wyszukiwanym "Komputer PC". Wystarczy mi tylko ten jeden "poziom" niżej, nie chcę szukać powiązań w nieskończoność. Dla uproszczenia powiązanie zawiera tylko jeden numer, więc słuchawki nie mogą np. należeć do Smartphona i Komputera jednocześnie.

Powinno zwrócić:
Kod
4   Karta graficzna              1
7   Dysk twardy                  1
8   Kabel SATA do dysku          7



Da się to zrobić jakoś sensownie na jednym zapytaniu?

Myślałem aby pobrać pierwsze powiązania tym zapytaniem które podałem, a potem w pętlę PHP dać te same zapytania dla tych powiązanych. To jednak się chyba nie sprawdzi bo po pierwsze zwiększy to mocno liczbę zapytań, a co ważniejsze nie będę mógł zrobić paginacji itd.

Jakieś rady?

Ten post edytował nyfko 8.05.2016, 13:20:57
Go to the top of the page
+Quote Post

Posty w temacie


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.12.2025 - 22:43