Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] Wynik łączenia poprzez JOIN LEFT
Forum PHP.pl > Forum > Bazy danych > MySQL
miska
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 ...:
prond
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;
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.