Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] dwa grupowania?
Forum PHP.pl > Forum > Bazy danych
Michu
Witam. Mam następującą tablicę:
votes (won, lost)

W tej tablicy znajduje się kilka tysięcy rekordów, każdy składa się z dwóch liczb (są to id rekordów z innych tablic). Moim zadaniem jest dowiedzieć się który id najczęściej wygrywał z innymi, czyli który ma najwięcej wygranych (won) w stosunku do wszystkich rekordów w których się znajduje ( won lub lost).

Zacząłem od zapytania sortującego według ilości wygranych:
  1. SELECT won, count(won) AS c_won FROM votes GROUP BY won ORDER BY c_won DESC

To działa, lecz gdy chcę do zapytania dołączyć ilość przegranych:
  1. SELECT won, count(won) AS c_won, count(lost) AS c_lost FROM votes GROUP BY won ORDER BY c_won DESC

Jest już gorzej. Czy dałoby się dodać jeszcze jedno grupowanie do zapytania? A może idę w złą stronę?

Z góry dzięki za poświęcony czas.
wookieb
  1. GROUP BY won, c_lost

?
Michu
nie, nie o to chodzi. Może postawię sprawę inaczej.
Mam tabelkę o następujących danych:
  1. INSERT INTO votes(won, lost) VALUES
  2. (1, 5),
  3. (5, 3),
  4. (2, 5),
  5. (1, 4),
  6. (2, 5),
  7. (4, 3),
  8. (1, 2),
  9. (2, 4),
  10. (2, 3)

Moim zadaniem jest otrzymać coś mniej więcej takiego:
id | wygrał | przegrał
1 3 0
2 4 1
3 0 3
4 1 2
5 1 3

Gdzie każdemu id przypisana jest jego ilość wygranych i przegranych. Jak to zrobić?


EDIT-----------------------------------------------
Rozwiązane. Oto kod:
  1. SELECT twon.id, cwon, clost FROM (SELECT won AS id, count(won) AS cwon FROM votes GROUP BY won) AS twon INNER JOIN (SELECT lost AS id, count(lost) AS clost FROM votes GROUP BY lost) AS tlost ON twon.id = tlost.id ORDER BY id DESC
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.