Witam.
Mam pewien problem - nie mogę sobie poradzić z zapytaniem, które by wybierało dane na takiej zasadzie:
tabela votes:
--
-- Struktura tabeli dla `votes`
--
CREATE TABLE IF NOT EXISTS `votes` (
`vote_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`survey_id` smallint(5) UNSIGNED NOT NULL,
`question_id` int(10) UNSIGNED NOT NULL,
`answer` varchar(20) COLLATE utf8_polish_ci NOT NULL,
`IP` varchar(128) COLLATE utf8_polish_ci NOT NULL,
`vote_time` datetime NOT NULL,
PRIMARY KEY (`vote_id`),
KEY `survey_id` (`survey_id`,`question_id`),
KEY `question_id` (`question_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=77 ;
--
-- Zrzut danych tabeli `votes`
--
INSERT INTO `votes` (`vote_id`, `survey_id`, `question_id`, `answer`, `IP`, `vote_time`) VALUES
(56, 44, 92, '3', '127.0.0.1', '2011-02-19 13:34:50'),
(57, 44, 93, '3', '127.0.0.1', '2011-02-19 13:34:50'),
(58, 44, 94, '6', '127.0.0.1', '2011-02-19 13:34:50'),
(59, 44, 95, '2', '127.0.0.1', '2011-02-19 13:34:50'),
(60, 44, 96, '9', '127.0.0.1', '2011-02-19 13:34:50'),
(61, 44, 92, '3', '127.0.0.1', '2011-02-19 13:34:55'),
(62, 44, 93, '3', '127.0.0.1', '2011-02-19 13:34:55'),
(63, 44, 94, '6', '127.0.0.1', '2011-02-19 13:34:55'),
(64, 44, 95, '2', '127.0.0.1', '2011-02-19 13:34:55'),
(65, 44, 96, '9', '127.0.0.1', '2011-02-19 13:34:55'),
(66, 44, 92, '3', '127.0.0.1', '2011-02-19 13:38:14'),
(67, 44, 93, '3', '127.0.0.1', '2011-02-19 13:38:14'),
(68, 44, 94, '6', '127.0.0.1', '2011-02-19 13:38:14'),
(69, 44, 95, '2', '127.0.0.1', '2011-02-19 13:38:14'),
(70, 44, 96, '9', '127.0.0.1', '2011-02-19 13:38:14'),
(71, 44, 92, '1', '127.0.0.1', '2011-02-20 11:24:04'),
(72, 44, 93, '3', '127.0.0.1', '2011-02-20 11:24:04'),
(73, 44, 94, '3,4,5,6', '127.0.0.1', '2011-02-20 11:24:04'),
(74, 44, 95, '2', '127.0.0.1', '2011-02-20 11:24:04'),
(75, 44, 96, '5', '127.0.0.1', '2011-02-20 11:24:04'),
(76, 43, 91, '1,3', '127.0.0.1', '2011-02-20 11:37:06');
--
-- Ograniczenia dla zrzutów tabel
--
--
-- Ograniczenia dla tabeli `votes`
--
ALTER TABLE `votes`
ADD CONSTRAINT `votes_ibfk_1` FOREIGN KEY (`survey_id`) REFERENCES `surveys` (`survey_id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `votes_ibfk_2` FOREIGN KEY (`question_id`) REFERENCES `questions` (`question_id`) ON DELETE CASCADE ON UPDATE CASCADE;
tabela surveys:
--
-- Struktura tabeli dla `surveys`
--
CREATE TABLE IF NOT EXISTS `surveys` (
`survey_id` smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT,
`survey_title` varchar(250) COLLATE utf8_polish_ci NOT NULL,
`survey_desc` text COLLATE utf8_polish_ci,
`user_id` tinyint(3) UNSIGNED NOT NULL COMMENT 'id uzytkownika, ktory dodal ankiete',
`add_date` datetime NOT NULL,
`mod_date` datetime DEFAULT NULL,
`exp_date` datetime DEFAULT NULL,
`visible` tinyint(1) NOT NULL,
PRIMARY KEY (`survey_id`),
KEY `id_autora` (`user_id`),
KEY `data_dodania` (`add_date`),
KEY `survey_id` (`survey_id`),
KEY `survey_id_2` (`survey_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=45 ;
--
-- Zrzut danych tabeli `surveys`
--
INSERT INTO `surveys` (`survey_id`, `survey_title`, `survey_desc`, `user_id`, `add_date`, `mod_date`, `exp_date`, `visible`) VALUES
(43, 'Jaką porę roku lubisz najbardziej?', 'Badanie dotyczące ulubionej pory roku ankietowanych.', 1, '2011-02-12 13:21:08', '2011-02-12 13:21:08', '2011-02-28 20:00:00', 1),
(44, 'Ulubione kolory.', 'Kilka pytań odnośnie ulubionych kolorów.', 1, '2011-02-12 14:32:20', '2011-02-12 14:32:20', '2011-02-25 12:00:00', 1);
--
-- Ograniczenia dla zrzutów tabel
--
Pożądany wynik:
Chcę uzyskać tabelę, która będzie zawierać 2 kolumny:
- tytuły wszystkich ankiet (survey_title)
- zliczoną ilość unikalnych głosów na daną ankietę (unikalnych = takich, które mają jednakowy votes.vote_time)
Dla SQL'a powyżej tabela taka powinna wyglądać tak:
survey_title | votes
Ulubione kolor. | 4
Jaką porę roku.. | 1
Próbowałem na różne sposoby, ale jedyne, co mi się udało osiągnąć, to jest rekord, który zliczał te powtórzenia dobrze, no ale właśnie był to tylko jeden rekord, a ja chcę uzyskać wszystkie rekordy i county dla każdego tytułu ankiety.
Czy może mi ktoś pomóc? Będę bardzo wdzięczny.