Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] Ralecje typu "kilka z jednego"
Forum PHP.pl > Forum > Bazy danych > MySQL
Worms
Witam!

Mam mały problem z połaczeniem danych z kilku tabel. Otóz mam dwie tabele:

PRZEDMIOTY:
Kod
+--+------------+
|1 | J.Polski   |
+--+------------+
|2 | Matematyka |
+--+------------+
|3 | J.Angielski|
+--+------------+


oraz NAUCZYCIELE:
Kod
+--+------+--+--+
|id| imie |s1|s2|
+--+------+--+--+
|1 | Ania |1 |3 |
+--+------+--+--+
|2 |Kasia |2 |1 |
+--+------+--+--+


I teraz tak: Każdy nauczyciel uczy dwóch przedmiotów, których numery id zostały podane w polach s1 oraz s2. Jak za pomocą jednego zapytania pobraz róznoczesnie wszystkie dane? Satysfakcjonowałby mnie wynik:
Kod
+--+------+-----------+------------+
|id| imie |    s1     |     s2     |
+--+------+-----------+------------+
|1 | Ania |J.Polski   |J.Angielski |
+--+------+-----------+------------+
|2 |Kasia |Matematyka |J.Polski    |
+--+------+-----------+------------+


Z góry dziękuję za odpowiedzi smile.gif
ayeo
W sumie zgodnie z zasadami normalizacji baz danych nie powinieneś mięć tych pól s1, s2 w tabeli Nauczyciel. Tworzy się osobną tabelę opisującą relacje wiele do wielu (jeden nauczyciel może uczyć więcej niż jednego przedmiotu, a jeden przedmiot może być wykładany przez więcej niż jednego nauczyciela)... U Ciebie i Kasia i Ania uczą Języka polskiego... Tabela subject2teacher może wyglądać tak:

subject | teacher
1 | 2
1 | 1
3 | 1

Jednym zapytaniem możesz pobrać dane używając JOIN. Nie wiem czy to tak zadziała, ale jakoś tak to powinno wyglądać: (do Twoich tabeli)
Kod
SELECT nauczyciele.imie, naucyzciele.s1, nauczyliele.s2, przedmioty.nazwa
JOIN LEFT przedmioty ON nauczyciele.s1 = przedmioty.id
JOIN LEFT przedmioty ON nauczyciele.s2 = przedmioty.id
WHERE....

Może nie działać - chciałem Cię tylk onaprowadzić...
Pozdrawiam
dymsza1
to nie zadzial na 99 %
raczej cos takiego :

powim jak bym to zrobil poloczyl bym najpier z jedna kolumna a potem uzyl tego co wyjdzie jako podzapytania i poloczy z 2
Worms
postaram się popróbować rozwiązać to w jakiś bardziej ergonomiczny sposób, dzięki za pomysły :]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.