Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql] Wynik łączenia poprzez JOIN LEFT, Wyświetlenie wyniku
miska
post 28.12.2007, 19:47:05
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 23.11.2003

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


OPIS:
W tabelce mamy pole instruktorzy


SQL wyciągający dane o kursie wygląda następująco:
  1. "SELECT kursnumer AS kursnumer,
  2. datarozpoczecia AS datarozpoczecia,
  3. datazakonczenia AS datazakonczenia,
  4. miejsce AS miejsce,
  5. nazwauprawnienia AS nazwauprawnienia,
  6. K.idlistauprawnien AS idlistauprawnien
  7. FROM kursy AS K
  8. LEFT JOIN uprawnienia_lista AS UL ON K.idlistauprawnien=UL.idlistauprawnien
  9. WHERE idkursu='$kursy->idkursu'

Instruktorów wyciągam zapytaniem drugim:
  1. "SELECT CONCAT_WS(' ',imie,nazwisko) AS instruktor
  2. FROM dane AS D
  3. LEFT JOIN instruktorzy AS I ON (D.iduser = I.iduser)
  4. LEFT JOIN kursy_kadra AS KK ON (I.idinstruktora = KK.idinstruktora)
  5. WHERE (KK.idkursu = '$this->idkursu')


Czyli są wykonywane dwa zapytania do bazy jedno dotyczace kursu drugie dotyczące instruktorów

PROBLEM:
w jaki sposób wyświetlić dane tylko jednym zapytaniem ...:

Ten post edytował miska 28.12.2007, 19:49:47
Go to the top of the page
+Quote Post
prond
post 28.12.2007, 21:07:45
Post #2





Grupa: Zarejestrowani
Postów: 254
Pomógł: 10
Dołączył: 8.11.2006
Skąd: Warszawa

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


Tak na oko to chyba będzie takie zapytanie. Ten GROUP_CONCAT wrzuciłem dlatego, że ze struktury tabel i screenshota wynika, że możesz mieć wielu instruktorów do jednego kursu. Skoro chcesz mieć tylko ich imię i nazwisko to można to od razu złączyć <br/>'ką.
  1. SELECT
  2. kursnumer AS kursnumer,
  3. datarozpoczecia AS datarozpoczecia,
  4. datazakonczenia AS datazakonczenia,
  5. miejsce AS miejsce,
  6. nazwauprawnienia AS nazwauprawnienia,
  7. K.idlistauprawnien AS idlistauprawnien,
  8. GROUP_CONCAT(CONCAT_WS(' ',imie,nazwisko) SEPARATOR '<br/>') AS instruktorzy
  9. FROM kursy AS K
  10. LEFT JOIN uprawnienia_lista AS UL ON K.idlistauprawnien=UL.idlistauprawnien
  11. LEFT JOIN kursy_kadra AS KK ON (KK.idkursu = K.idkursu)
  12. LEFT JOIN instruktorzy AS I ON (I.idinstruktora = KK.idinstruktora)
  13. WHERE K.idkursu='$kursy->idkursu'
  14. GROUP BY
  15. kursnumer AS kursnumer,
  16. datarozpoczecia AS datarozpoczecia,
  17. datazakonczenia AS datazakonczenia,
  18. miejsce AS miejsce,
  19. nazwauprawnienia AS nazwauprawnienia,
  20. K.idlistauprawnien AS idlistauprawnien;


--------------------
--------------------------------------------------------------------------------
weblog.axent.pl
--------------------------------------------------------------------------------
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 Wersja Lo-Fi Aktualny czas: 6.07.2025 - 12:47