![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 195 Pomógł: 0 Dołączył: 13.04.2004 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam trzy tabele:
Kod main: I teraz chciałbym, za pomocą jednego zapytania, wybrać wszystkie dane z tabeli main, tak, by do każdego id wybrać wszystkie dane z tabeli options o takim samym owner i przy okazji wszystkie pola z options_types, które mają id równe polu option z tabeli options. Żeby nie być gołosłownym, skonstruowałem własne zapytanie:+---+----------+-----------+--- |id | name | value | ... +---+----------+-----------+--- | 1 | item1 | value1 | ... | 2 | item2 | value2 | ... | 3 | item3 | value3 | ... | 4 | item4 | value4 | ... +---+----------+-----------+--- options: +---+----------+-----------+--- |id | owner | option | ... +---+----------+-----------+--- | 1 | 1 | 1 | ... | 2 | 1 | 2 | ... | 3 | 2 | 1 | ... | 4 | 3 | 3 | ... +---+----------+-----------+--- options_types: +---+----------+-----------+--- |id | nameX | valueX | ... +---+----------+-----------+--- | 1 | opt1 | val1 | ... | 2 | opt2 | val2 | ... | 3 | opt3 | val3 | ... +---+----------+-----------+--- To zapytanie ma jednakże sporo wad: 1.) Zignoruje rekordy z tabeli main, które nie mają odpowiednika w tabeli options (a są takie) 2.) Jeżeli jednemu rekordowi z tabeli main przypada więcej niż jeden rekord w tabeli options, zostanie wybrany tylko pierwszy - pozostałe zostaną zignorowane każdy rekord z tabeli options ma dokładnie jeden odpowiadający mu rekord z tabeli options_types. Jeden rekord z tabeli main ma dowolną ilość (także zero), odpowiadających mu rekordów z tabeli options. Jak wybrać wszystkie te dane i zapisać w tablicy wielowymiarowej za jednym zamachem? MySQL 4.0 -------------------- Językiem którym najlepiej operują wszyscy programiści są przekleństwa.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 16:53 |