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 ale nie uzyskasz odpowiedzi jak przedstawiasz zupełnie inny problem niż masz, bo coś co działa dla tego nie zadziała dla innej bazy.

I tak trzyma się w rożnych tabelach, ale to zależy od systemu, czasem pomimo redundancji stosuje się nadmiarowość aby szybciej wyszukiwać, a czasem nie.

CuteOne, problem w tym że ta baza wcale tak nie wygląda (IMG:style_emoticons/default/biggrin.gif)

Ten post edytował com 8.05.2016, 13:41:02
Go to the top of the page
+Quote Post
nyfko
post
Post #3





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

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


Cytat(com @ 8.05.2016, 14:30:42 ) *
no ale nie uzyskasz odpowiedzi jak przedstawiasz zupełnie inny problem niż masz, bo coś co działa dla tego nie zadziała dla innej bazy.

I tak trzyma się w rożnych tabelach, ale to zależy od systemu, czasem pomimo redundancji stosuje się nadmiarowość aby szybciej wyszukiwać, a czasem nie.

CuteOne, problem w tym że ta baza wcale tak nie wygląda (IMG:style_emoticons/default/biggrin.gif)


Ale przedstawiłem problem. Tak jak mówiłem, nie mogę robić sobie osobnych tabel. Pytałem się tylko czy mogę pętlę w PHP z tym samym zapytaniem zastąpić jakoś w SQL pojedynczym zapytaniem. Jeśli się nie da, to wystarczy powiedzieć (IMG:style_emoticons/default/wink.gif) Nie chcę szukać najlepszych rozwiązań dla sklepu internetowego, bo nie o to chodzi, to był tylko konkretny przykład i pytałem o zapytanie NA TYM konkretnym przykładzie z konkretną strukturą tabeli.
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: 24.12.2025 - 15:12