Zliczenie rekordów w bazie danych mysql

0

Witam, proszę o pomoc w rozwiązaniu sprawy (niestety nie wiem jak do tego się zabrać...)

Posiadam taką bazę

CREATE TABLE `wartosci` (
  `idwartosci` int(11) NOT NULL AUTO_INCREMENT,
  `wartosca` varchar(18) DEFAULT NULL,
  `wartoscb` varchar(50) DEFAULT NULL,
  `wartoscc` varchar(45) DEFAULT NULL,
  `wartoscd` varchar(45) DEFAULT NULL,
  `dataa` date DEFAULT NULL,
  `datab` datetime DEFAULT NULL,
  `wartosce` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`idpodpisane`)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=big5$$

W kolumnie dataa występuje data w formacie Y-m-d (z aktualnego miesiąca). Potrzebuję zliczyć ile razy powtarzają się poszczególne rekordy w tej kolumnie.

Chciałbym wyświetlić chronologicznie ilość wystąpień poszczególnych dni miesiąca z tej kolumny po przecinku (za pomocą php)
Np. 4, 2, 4 (co odpowiadałoby datom 2012-02-01, 2012-02-02, 2012-02-03) W przypadku kiedy nie ma danej daty w kolumnie miałaby zostać przypisana wartość 0. Dzięki temu miałbym otrzymać ciąg wartości rozdzielonych przecinkiem (tyle wartości ile dni w aktualnym miesiącu)

0
select dataa, count(*) from wartosci
group by dataa
order by dataa

?
(to ci oczywiście wypisze tylko te daty które w bazie są)

0

Czasami aby sprytnie przefiltrować dane (czyli aby uzyskać takie wartości, które akurat nie występują) robi się joina z przygotowaną w tym celu tabelą. Tutaj najprościej było by zrobić left joina tabeli zawierającej dni miesiąca (albo wszystkie dni roku) z twoją tabelą zawierającą konkretne dane. Pogrupować, posumować, gotowe.

...jeśli oczywiście nie pytałeś o podstawy sql.

0

Rzeczywiście, nie pomyślałem o stworzeniu tabeli pomocniczej. Bardzo dziękuję za pomoc, z resztą sobie poradzę :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1