SELECT users.id, users.login, count( k.id ) AS liczba, count( k2.id ) AS pozytywne, count( k1.id ) AS neutralne, count( k0.id ) AS negatywne FROM users JOIN komentarze AS k ON k.TO = users.id LEFT JOIN komentarze AS k2 ON k2.TO = users.id AND k2.typ =2 LEFT JOIN komentarze AS k1 ON k1.TO = users.id AND k1.typ =1 LEFT JOIN komentarze AS k0 ON k0.TO = users.id AND k0.typ =0 GROUP BY users.id ORDER BY liczba DESC LIMIT 0, 10
Problem polega na tym, że wyniki count nie są dla mnie satysfakcjonujące.
Wynik zapytania to:

A powinien:

Z góry dziękuje za wszelką pomoc.
Zrzut tabel:
-- phpMyAdmin SQL Dump -- version 2.10.3 -- Wersja serwera: 5.0.45 -- Wersja PHP: 5.1.6 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; -- -------------------------------------------------------- -- -- Struktura tabeli dla `komentarze` -- CREATE TABLE `komentarze` ( `id` int(11) NOT NULL AUTO_INCREMENT, `from` int(11) NOT NULL, `to` int(11) NOT NULL, `aid` int(11) NOT NULL, `text` varchar(300) NOT NULL, `reply` varchar(300) DEFAULT NULL, `dodano` datetime NOT NULL, `typ` int(2) NOT NULL DEFAULT '2', `rejstr` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'czy właściciel zarejstrowany', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=88 ; -- -- Zrzut danych tabeli `komentarze` -- INSERT INTO `komentarze` VALUES (82, 11, 423, 0, 'asdas', NULL, '2008-03-02 17:51:56', 2, 1); INSERT INTO `komentarze` VALUES (83, 11, 423, 0, 'asdas', NULL, '2008-03-02 17:51:56', 2, 1); INSERT INTO `komentarze` VALUES (84, 11, 423, 0, 'asdas', NULL, '2008-03-02 17:51:56', 2, 1); INSERT INTO `komentarze` VALUES (87, 12, 423, 0, 'sssssssssssss', 'fddffsd', '2008-04-07 19:31:06', 1, 1); -- -------------------------------------------------------- -- -- Struktura tabeli dla `users` -- CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `login` varchar(32) NOT NULL, `email` varchar(255) NOT NULL, `pass` char(40) NOT NULL COMMENT 'sha1', `active` varchar(8) NOT NULL COMMENT 'jeśli równe ''yes'' to user ma potwierdzone konto', `reg_date` datetime NOT NULL COMMENT 'data rejestracji', `ocen` int(11) NOT NULL DEFAULT '0' COMMENT 'liczba ocen (tymczasowe)', `imie` varchar(255) NOT NULL, `nazwisko` varchar(255) NOT NULL, `firma` varchar(255) NOT NULL, `adres` varchar(255) NOT NULL, `kod` varchar(6) NOT NULL DEFAULT '-', `miasto` varchar(255) NOT NULL, `woj` enum('','dolnośląskie','kujawsko-pomorskie','lubelskie','lubuskie','łódzkie','małopolskie','mazowieckie','opolskie','podkarpackie','podlaskie','pomorskie','śląskie','świętokrzyskie','warmińsko-mazurskie','wielkopolskie','zachodniopomorskie') NOT NULL, `nip` varchar(20) NOT NULL, `regon` varchar(20) NOT NULL, `tel1` int(10) NOT NULL, `tel2` int(10) NOT NULL, `gg` int(10) NOT NULL, `www` varchar(255) NOT NULL, `omnie` text NOT NULL, `photo` varchar(255) NOT NULL COMMENT 'nazwa zdj. z kat. /photos/', `dlug` int(11) NOT NULL DEFAULT '0', `lastseen` date NOT NULL, `firmach` char(1) NOT NULL DEFAULT '1', `adresch` char(1) NOT NULL DEFAULT '1', `kodch` char(1) NOT NULL DEFAULT '1', `miastoch` char(1) NOT NULL DEFAULT '1', `wojch` char(1) NOT NULL DEFAULT '1', `nipch` char(1) NOT NULL DEFAULT '1', `regonch` char(1) NOT NULL DEFAULT '1', `tel1ch` char(1) NOT NULL DEFAULT '1', `tel2ch` char(1) NOT NULL DEFAULT '1', `ggch` char(1) NOT NULL DEFAULT '1', `wwwch` char(1) NOT NULL DEFAULT '1', `imiech` char(1) NOT NULL DEFAULT '1', `nazwiskoch` char(1) NOT NULL DEFAULT '1', `block` varchar(4) DEFAULT NULL, PRIMARY KEY (`login`), KEY `id` (`id`), FULLTEXT KEY `login` (`login`) ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=428 ; -- -- Zrzut danych tabeli `users` -- INSERT INTO `users` VALUES (423, 'sledziu1', '', '', 'yes', '2008-03-01 18:01:32', 0, 'aaa', 'bbb', 'fgggggg', 'zdsadas 22', '22-333', 'sdfsda', 'lubuskie', '', '', 1234, 6877, 0, '', 'fgfgfgddf<br />\r\n<b>aaa</b><br />\r\n<br />\r\n<br />\r\n<br />\r\nc', '', 0, '0000-00-00', '1', '1', '1', '1', '1', '', '', '1', '1', '', '', '', '', NULL);