Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL][PHP] Problem z COUNT, zlicza, ale nie widzi różnicy
Lilo
post
Post #1





Grupa: Zarejestrowani
Postów: 33
Pomógł: 3
Dołączył: 22.03.2010

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


Witam, mój problem polega na tym, że wynik jest zliczany i sumowany, a chciałabym by był tylko zliczany i z osobna interpretowany dla każdego kursu.

Czyli tak : mam dwie tabele

tabela :start

|id_start |data ```|`kurs |
--------------------------------
11 ``` |2010-07-30| 9
--------------------------------
77 ```|2010-07-30| 6
--------------------------------

tabela: wyjazd

| id_wyj | id_start |
|---------+-----------|
|1```` | 11 ```` |
|---------+-----------|
| 2```` | 11```` |
|---------+-----------|
| 3 ```` | 11```` |
|---------+-----------|
| 4 ```` | 11```` |
|---------+-----------|
| 5 ```` | 77```` |
|---------+-----------|
| 6 ```` | 77```` |
-----------------------
  1. $zapytanie= "SELECT COUNT(w.id_wyj) AS liczba FROM wyjazd AS w INNER JOIN start AS s WHERE s.id_start=w.id_start AND s.data='2010-07-30'";
  2. $wynik= mysql_query($zap, $polaczenie);
  3. while ($rek = mysql_fetch_assoc($wynik)) {
  4. $liczba = $rek['liczba'];
  5. $miejsca= 30-$liczba;
  6.  
  7. echo '<label><input name="form" id="form" type="radio" value="'. $rek['kurs'].' "/>'. $rek['kurs'].'&nbsp;'.$miejsca.'<br></label>';
  8.  
  9. }


W wyniku while otrzymuję
| kurs `` | miejsca |
|---------+-----------|
| 6```` | 24 ``` |
|---------+-----------
| 9 ```` | 24 ``` |
|---------+-----------|

A chciałabym mieć tak :
| kurs `` | miejsca |
|---------+-----------|
| 6 ```` | 28 ```` |
|---------+-----------|
| 9 ```` | 26 ``` |
|---------+-----------|

Bardzo proszę o pomoc, nie wiem, czy to przez semantykę zapytania, czy to w ogóle jest wykonywalne ?.

Przepraszam za apostrofy, inaczej tabele byłyby nieczytelne.
Go to the top of the page
+Quote Post
skarabe.pl
post
Post #2





Grupa: Zarejestrowani
Postów: 142
Pomógł: 49
Dołączył: 29.07.2010

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


Spróbuj:
  1. SELECT s.kurs, COUNT(w.id_wyj) AS liczba FROM wyjazd AS w INNER JOIN start AS s WHERE s.id_start=w.id_start AND s.DATA='2010-07-30' GROUP BY s.kurs
Go to the top of the page
+Quote Post
everth
post
Post #3





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Dodaj jeszcze może DISTINCT
  1. SELECT DISTINCT s.kurs, COUNT(w.id_wyj) AS liczba FROM wyjazd AS w INNER JOIN start AS s WHERE s.id_start=w.id_start AND s.DATA='2010-07-30' GROUP BY s.kurs
Go to the top of the page
+Quote Post
Lilo
post
Post #4





Grupa: Zarejestrowani
Postów: 33
Pomógł: 3
Dołączył: 22.03.2010

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


Wasza propozycja jest jak najbardziej trafna, ale przez to, że zapytanie jest zależne od innego zapytania o czym nie wspomniałam (IMG:style_emoticons/default/sad.gif) . Problem wciąż jest.

  1. $zapytanie1= "SELECT ..."; // Zapytanie spełnia złożony warunek pobiera min kurs w wyniku czego mam kurs : 4; 5; 6; 9.
  2. $wynik1= mysql_query($zapytanie1, $polaczenie);
  3. while ($rekord = mysql_fetch_assoc($wynik1)){
  4.  
  5. $zapytanie=" SELECT DISTINCT s.kurs, COUNT(w.id_wyj) AS liczba FROM wyjazd AS w INNER JOIN start AS s WHERE s.id_start=w.id_start AND s.data='2010-07-30' GROUP BY s.kurs";
  6. $wynik= mysql_query($zapytanie) or die ('Bł?d: ' . mysql_error());
  7. while ($rek = mysql_fetch_assoc($wynik)) {
  8. $liczba = $rek['liczba'];
  9. $miejsca= 30-$liczba;
  10.  
  11. echo '<label><input name="form" id="form" type="radio" value="'. $rek['kurs'].' "/>'. $rek['kurs'].'&nbsp;'.$miejsca.'<br></label>';
  12.  
  13. }
  14. }


W wyniku while otrzymuję
| kurs `` | miejsca |
|---------+-----------|
| 6```` | 24 ``` |
|---------+-----------
| 6 ```` | 26 ``` |
|---------+-----------|
| 9```` | 24 ``` |
|---------+-----------
| 9 ```` | 26 ``` |
----------------------
Powinno być tak :
| kurs `` | miejsca |
|---------+-----------|
| 4 ```` | 30 ```` | // nie ma kursu w tabeli start, więc $liczba=0 i ilość miejsc pozostaje 30.
|---------+-----------|
| 5 ```` | 30 ``` |
|---------+-----------|
| 6 ```` | 28 ```` |
|---------+-----------|
| 9 ```` | 26 ``` |
|---------+-----------|
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: 23.08.2025 - 12:06