У меня есть две таблицы, которые выглядят так:Выбор записей из таблицы, а затем выбор количества записей из другой таблицы
Table: pictures
`picture_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`picture_title` varchar(255) NOT NULL,
`picture_description` text NOT NULL,
`picture_src` varchar(50) NOT NULL,
`picture_filetype` varchar(10) NOT NULL,
`picture_width` int(11) NOT NULL,
`picture_height` int(11) NOT NULL,
`user_id` int(10) unsigned NOT NULL,
`upload_date` datetime NOT NULL,
-
Table: picture_votes
`vote_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`picture_id` int(10) unsigned NOT NULL,
`vote` tinyint(4) NOT NULL,
`user_id` int(10) unsigned NOT NULL,
`timestamp` datetime NOT NULL,
И то, что я хочу сделать, это выбрать все поля из pictures
таблицы, а затем количество всех записей в picture_votes
где pictures.picture_id = picture_votes.picture_id
, как, например,
picture_id => 1
picture_title => 'Pic title'
picture_description => 'Pic description'
picture_src => 'b8b3f2c3a85f1a46fbf2ee132d81f783'
picture_filetype => 'jpg'
picture_width => 612
picture_height => 612
user_id => 1
upload_date => '2013-10-12 12:00:00'
vote_count => 3 // Amount of records in `picture_votes` that has `picture_id` = 1
Я придумал (где $limit
это количество снимков для выбора);
SELECT pictures.*, count(picture_votes.vote) as vote_count
FROM pictures, picture_votes
WHERE pictures.picture_id = picture_votes.picture_id
ORDER BY upload_date DESC
LIMIT $limit
Это выбирает только один снимок и подсчет всех записей в picture_votes
.
Добавить 'GROUP BY pictures.picture_id'. Замечание, я предпочитаю свои предложения 'JOIN' в' ON', а не в 'WHERE'. – Wrikken
'выбора изображений. *, Граф (picture_votes.vote), как vote_count из фотографий РЕГИСТРИРУЙТЕСЬ picture_votes ВКЛ (pictures.picture_id = picture_votes.picture_id) GROUP BY pictures.picture_id ORDER BY DESC pictures.upload_date LIMIT $ limit' работы но он будет выбирать только фотографии, голосовавшие в таблице 'picture_votes'. Фотографии без голосов не выбраны. – Unidan
А, так что вы хотите «LEFT JOIN» (который даст вам все фотографии, даже без голосов). – Wrikken