evolucja
12.02.2013, 21:49:19
Tabela klienci
klientId|imie|nazwisko
Tabela grupy
grupaId|nazwaGrupy
Tabela klienci_grupy
klientId|grupaId|pracownik
Jeden klient może być w wielu grupach. Jak pobrać klientów występujących w grupie 1 lub 2(a np. jest dopisany do 10 grup)?
Proszę o pomoc
daniel1302
12.02.2013, 21:56:26
SELECT k.klientId, k.imie, k.nazwisko, g.grupaId, g.nazwaGrupy, c.pracownik FROM klienci_grupy c LEFT JOIN grupy g ON g.grupaId=c.grupaId LEFT JOIN klienci k ON k.klientId=c.klientId
evolucja
12.02.2013, 22:13:06
i jak dodam do tego warunek
WHERE g.grupaId = 1 OR g.grupaId = 2
to jak klient jest w obu grupach to będzie występował dwukrotnie..
daniel1302
12.02.2013, 22:17:59
SELECT k.klientId, k.imie, k.nazwisko, g.grupaId, g.nazwaGrupy, c.pracownik FROM klienci_grupy c LEFT JOIN grupy g ON g.grupaId=c.grupaId LEFT JOIN klienci k ON k.klientId=c.klientId WHERE g.grupaId = 1 OR g.grupaId = 2 GROUP BY k.klientId
evolucja
12.02.2013, 22:22:38
Okej, całkiem logiczne. Tylko, że wtedy znowu będzie w wynikach widoczna jedna grupa, ale to nic, poradzę sobie inaczej.
Rozumiem, że wszystkie zapytania korzystające z takich relacji formułujemy w sposób pobierający dane z tabeli łączącej, a nie jak na początku próbowałem - z jednej z danymi?
daniel1302
12.02.2013, 22:35:31
Najprościej tak było. Możesz posortować wg klientId, i wtedy skrypt zajmie się łączeniem grup.