Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Jeden do wielu, zapytanie
Forum PHP.pl > Forum > Przedszkole
evolucja
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 smile.gif
daniel1302
  1. 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
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
  1. 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
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
Najprościej tak było. Możesz posortować wg klientId, i wtedy skrypt zajmie się łączeniem grup.
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.