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
 
Start new topic
Odpowiedzi
com
post
Post #2





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


no jeśli masz tak zbudowaną tabele jak przedstawiłeś to wydałeś pieniądze w błoto na ten skrypt, bo to jest po pierwsze źle zaprojektowane, co prowadzi do tego iż nie mozliwe jest właściwe uzyskanie tego co powinieneś uzyskać, czyli wykonanie takiego zapytania jakie chciałeś.

możesz zrobić z tym to co sugerował CuteOne
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: 29.12.2025 - 09:14