Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql] Ralecje typu "kilka z jednego", wyciąganie kilku danych z jednej tabeli
Worms
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 1.06.2006

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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
ayeo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


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

Ten post edytował ayeo 13.12.2007, 00:30:31


--------------------
Go to the top of the page
+Quote Post
dymsza1
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 13.12.2007

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


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
Go to the top of the page
+Quote Post
Worms
post
Post #4





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 1.06.2006

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


postaram się popróbować rozwiązać to w jakiś bardziej ergonomiczny sposób, dzięki za pomysły :]
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 04:58