Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MYSQL]Warunek WHERE przy zliczaniu rekordów
szczabik
post
Post #1





Grupa: Zarejestrowani
Postów: 226
Pomógł: 1
Dołączył: 13.05.2008

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


Mam takie zapytanie
  1. SELECT SUM(pkt) AS pkt, COUNT(druzyna_id) AS wygranych FROM mecze WHERE druzyna_id='1' GROUP BY druzyna_id

I jak dodać do tego warunek WHERE by liczyło tak gdy pole zdobyte_bramki jest wieksze stracone_bramki
i dodałem to tak
  1. SELECT SUM(pkt) AS pkt, COUNT(druzyna_id) WHERE zdobyte_bramki > stracone_bramki AS wygranych FROM mecze WHERE druzyna_id='1' GROUP BY druzyna_id

ale wywala wtedy błąd

Ten post edytował szczabik 11.11.2008, 17:28:23
Go to the top of the page
+Quote Post
MMX3
post
Post #2





Grupa: Zarejestrowani
Postów: 155
Pomógł: 9
Dołączył: 26.01.2004
Skąd: Poznań

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


Zawsze struktura musi być taka
  1. SELECT
  2. FROM
  3. WHERE

Jeżeli chcesz coś liczyć warunkowo to musisz dodać podzapytanie.
http://chcebycbogaty.pl/programowanie/mysql_41.html
Pierwszy link z googla na temat podazpytań
Go to the top of the page
+Quote Post
lukaszgolder
post
Post #3





Grupa: Zarejestrowani
Postów: 141
Pomógł: 17
Dołączył: 2.04.2008
Skąd: z Zabrza

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


Nie możesz użyć 2 razy WHERE w tym samym zapytaniu. Musisz to zrobić tak:
  1. SELECT SUM(pkt) AS pkt, COUNT(druzyna_id) AS wygranych FROM mecze WHERE druzyna_id='1' && zdobyte_bramki > stracone_bramki GROUP BY druzyna_id
Go to the top of the page
+Quote Post
szczabik
post
Post #4





Grupa: Zarejestrowani
Postów: 226
Pomógł: 1
Dołączył: 13.05.2008

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


Mam taką tabele
rmecz_id |druzyna_id |pkt |zdobyte_bramki |stracone_bramki |przeciwnik_id
1 1 0 1 4 4
2 2 3 3 0 2
3 1 0 3 5 6
4 1 3 2 1 5
5 1 0 1 2 9
5 1 1 1 1 3

I takim kodem
  1. SELECT SUM(pkt) AS pkt, COUNT(druzyna_id) AS ile, SUM(zdobyte_bramki) AS zdobyte,
  2. SUM(stracone_bramki) AS stracone FROM mecze WHERE druzyna_id='1' GROUP BY druzyna_id");

zliczam ile drużyna rozegrała meczy ile zdobyła bramek ile straciła i ile ma pkt
I chciałem do tego za pomocą
  1. COUNT(druzyna_id) WHERE (zdobyte_bramki > stracone_bramki) AS wygranych,
  2. COUNT(druzyna_id) WHERE (zdobyte_bramki < stracone_bramki) AS przegranych,
  3. COUNT(druzyna_id) WHERE (zdobyte_bramki = stracone_bramki) AS remis


Policzyć ile druzyna ma wygranych przegranych i zremisowanych meczy
i nie wiem jak to zrobić ?

Zrobiłem tak ale wywala Nieznana tabela 't'
  1. SELECT t.*, SUM(pkt) AS pkt, COUNT(druzyna_id) AS ile, SUM(zdobyte_bramki) AS zdobyte,
  2. SUM(stracone_bramki) AS stracone, (SELECT COUNT(druzyna_id)
  3. FROM mecze r
  4. WHERE (r.zdobyte_bramki > t.zdobyte_bramki)) AS wygrane
  5. , (SELECT COUNT(druzyna_id)
  6. FROM mecze r
  7. WHERE (r.zdobyte_bramki < t.zdobyte_bramki)) AS przegrane
  8. , (SELECT COUNT(druzyna_id)
  9. FROM mecze r
  10. WHERE (r.zdobyte_bramki = t.zdobyte_bramki)) AS remis FROM mecze WHERE druzyna_id='1' GROUP BY druzyna_id


Ten post edytował szczabik 11.11.2008, 19:30:15
Go to the top of the page
+Quote Post
Kildyt
post
Post #5





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

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


Ja bym to zrobił przy pomocy pętli while (wyświetlamy rekordy) i w warunku sprawdzamy jaki był to mecz.
Go to the top of the page
+Quote Post
zegarek84
post
Post #6





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


Cytat(szczabik @ 11.11.2008, 19:29:45 ) *
Mam taką tabele
rmecz_id |druzyna_id |pkt |zdobyte_bramki |stracone_bramki |przeciwnik_id
1 1 0 1 4 4
2 2 3 3 0 2
3 1 0 3 5 6
4 1 3 2 1 5
5 1 0 1 2 9
5 1 1 1 1 3


  1. SELECT SUM(pkt) AS pkt, COUNT(druzyna_id) AS ile, SUM(zdobyte_bramki) AS zdobyte,
  2. SUM(stracone_bramki) AS stracone, sum(zdobyte_bramki > stracone_bramki) AS wygranych, sum(zdobyte_bramki < stracone_bramki) AS przegranych, sum(zdobyte_bramki = stracone_bramki) AS remis FROM mecze GROUP BY druzyna_id


(IMG:http://images33.fotosik.pl/403/414066d7b518272d.png)

ale proponuję jeszcze dorzucić chociaż w select druzyna_id by było wiadomo której się to tyczy (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) - warunki where tutaj są dodane niejawnie, po prostu są sumowane wyniki działań matematycznych - dzięki działaniom matematycznym można nieźle filtrować dane i prawie nie ma ograniczeń - pisze prawie bo pewnie ktoś by wymyslil przykład nie do rozwiązania ale ;p

Ten post edytował zegarek84 12.11.2008, 13:16:29
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: 24.08.2025 - 13:26