Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Podzapytania - jak można sumować wg. kolumny?
Forum PHP.pl > Forum > Bazy danych > MySQL
milupo2nd
Witam,
Mam następującą tabelę:
  1. +----+---------+-------------+---------------+---------------------+--------+
  2. | id | user_id | category_id | category_name | created | status |
  3. +----+---------+-------------+---------------+---------------------+--------+
  4. | 1 | 27 | 4 | 5 | 2011-03-09 13:24:48 | F |
  5. | 2 | 27 | 6 | 6 | 2011-03-09 13:24:48 | F |
  6. | 3 | 27 | 9 | 9 | 2011-03-09 13:24:48 | A |
  7. | 4 | 27 | 6 | 6 | 2011-03-09 13:24:48 | N |
  8. | 5 | 27 | 6 | 6 | 2011-03-09 13:39:52 | F |
  9. +----+---------+-------------+---------------+---------------------+--------+



Jak wyciągnąć z tego dane dla określonego user_id w postaci:

  1. category_id | sum_status_A | sum_status_F | sum_status_N | sum_status_P | sum_status_X
  2. 6 | 0 | 2 | 1 | 0 | 0
  3. 4 | 0 | 1 | 0 | 0 | 0
  4. 9 | 1 | 0 | 0 | 0 | 0


Jak widać są statusy P i X które niekoniecznie muszą wystąpić w wierszach. Męczę się z tym już od kilku godzin i czym dłużej myślę tym jestem głupszy smile.gif
erix
GROUP + SUM(kolumna)

Prościej się nie da. wink.gif Chyba że o coś innego chodzi.
milupo2nd
No właśnie tak się nie da, ponieważ mogą nie wystąpić w wierszach określone statusy, więc jak je zliczymy? Chyba, że jakieś wyrażenie w SUM()?


-----------
Edit:

No tak a ja sie zastanawiałem i wymyślałem inne niestworzone rzeczy smile.gif

SELECT category_id, SUM(status='N'), SUM(status='A'), SUM(status='F'), SUM(status='P') FROM tabela
group by category_id
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.