Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][PHP] problem z łączeniem tabel
Forum PHP.pl > Forum > Przedszkole
Czaroo
Witam,

Mam taki mały problemik i nie bardzo mam pomysł co z nim zrobić...
Mam 2 tabele:
1) klienci (zawiera m.in. nr grupy)
2) grupy

Chce wyświetlić 1 tabelkę z:
1) Danymi grupy
2) Liczbą klientów w grupie

Użyłem czegoś takiego:
  1. <?php
  2. $sqlspr = mysql_query('SELECT a.*,COUNT(b.grupa) AS count
  3. FROM grupy a
  4. LEFT JOIN klienci b ON a.numer = b.grupa
  5. WHERE b.aktywny = 1 AND b.stop > "'.$_POST['dataspr'].'"
  6. GROUP BY a.numer')
  7. ?>


Ten $_post to wynik z wybranej daty do sprawdzenia.
Żeby obsłużyć pusty wynik dodałem warunek:

  1. <?php
  2. $sqlspr2 = mysql_num_rows($sqlspr);
  3. if ($sqlspr2 > 0)
  4. {
  5. $sql2 = $sqlspr;
  6. }
  7. else
  8. { 
  9. $sql2 = mysql_query('SELECT * FROM `grupy` ORDER BY `numer` ASC');
  10. }
  11. ?>


Póżniej jest pętla
  1. <?php
  2. while($wiersz2 = mysql_fetch_array($sql2))
  3. {
  4. ?>

i wyświetlam tabelę przez echo$wiersz2[#].

Czyli teraz obsługuje wyniki gdy mam grupę i aktywnych klientów w niej oraz całkiem puste wyniki.
Problem w tym, że jak w 1 grupie ktoś jest, a w drugiej nie lub ma aktywny=0, to wyświetla mi tylko tą jedną, a chciałbym żeby wyświetlał obie - czyli tą pustą oraz tą z klientem. Jak dla mnie powinno to być już warunkiem na poziomie wyświetlania wiersza ale nie bardzo mam na to pomysł.

Jakieś sugestie? Myślałem o zastosowaniu tego warunku if w pętli while ale jestem początkujący i nie chcę robić czegoś co z góry będzie błędne winksmiley.jpg

żeby było może trochę jaśniej to napiszę co wymyśliłem:

  1. SELECT
  2. `grupy`.`numer`,
  3. COUNT(`klienci`.`id` WHERE(`klienci`.`aktywny`=1 AND `klienci`.`stop` > "'.$_POST['dataspr'].'")) AS `ile`
  4. FROM `grupy` LEFT JOIN `klienci` ON (`klienci`.`grupa` = `grupy`.`numer`)
  5. GROUP BY `grupy`.`numer`


oczywiście to nie działa ale może bardziej będzie wiadomo o co mi chodzi winksmiley.jpg
jacekl
Spróbuj tak:

  1. SELECT a.numer , COUNT( b.grupa ) AS count
  2. FROM grupy a
  3. LEFT JOIN klienci b ON ( a.numer = b.grupa AND b.aktywny = 1 AND b.stop > "'.$_POST['dataspr'].'" )
  4. GROUP BY a.numer


JL
Czaroo
Działa, dzięki ! smile.gif party.gif
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.