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
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 |
|
|
|
![]() |
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 |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 29.07.2014 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) 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. |
|
|
|
nyfko [MySQL] Pobranie powiązanych rekordów i ich powiązanych 8.05.2016, 13:15:09
com zrobić z tego relacyjna bazę danych a nie takiego ... 8.05.2016, 13:20:42 
nyfko Cytat(com @ 8.05.2016, 13:20:42 ) zro... 8.05.2016, 13:25:21
CuteOne Dać się da ale wymaga, to zmiany struktury bazy d... 8.05.2016, 13:35:04
com no jeśli masz tak zbudowaną tabele jak przedstawił... 8.05.2016, 13:52:44
nyfko Ok to zapytam inaczej.
Czy da się zrobić tak by w... 8.05.2016, 13:56:15
com owszem da sie zrobić podzapytanie ale czasem lepie... 8.05.2016, 14:00:33 ![]() ![]() |
|
Aktualny czas: 24.12.2025 - 15:12 |