Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL][PHP] problem z łączeniem tabel, problem z select, select count i join
Czaroo
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 1.05.2005

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


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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował Czaroo 4.05.2008, 17:36:58
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
jacekl
post
Post #2





Grupa: Zarejestrowani
Postów: 36
Pomógł: 7
Dołączył: 4.05.2008
Skąd: Warszawa

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


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


Ten post edytował jacekl 4.05.2008, 19:49:19
Go to the top of the page
+Quote Post
Czaroo
post
Post #3





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 1.05.2005

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


Działa, dzięki ! (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) (IMG:http://forum.php.pl/style_emoticons/default/party.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 23:09