2012-10-05 36 views
0

直到今天,这是得到的一切查询,我需要知道从我的数据库中的照片:当使用count函数时,会导致此查询提供此错误的原因是什么?

SELECT 
    users.facebook_id, 
    users.first_name, 
    users.last_name, 
    photos.filename, 
    photos.description, 
    photos.finalist, 
    bookmarks.photo_id AS bookmark 
FROM `photos`, `users` 
LEFT JOIN bookmarks ON bookmarks.photo_id = 123 AND bookmarks.facebook_id = 123456789 
WHERE 
    users.facebook_id = photos.author AND 
    photos.id = 123 
LIMIT 1 

不过,现在我想也找出有多少票投给了这个照片。

这里是我的“票”表:

CREATE TABLE IF NOT EXISTS `votes` (
    `photo_id` int(11) NOT NULL, 
    `facebook_id` bigint(20) NOT NULL COMMENT 'The user''s Facebook ID.', 
    `date` varchar(10) NOT NULL COMMENT 'Date formatted as YYYY-MM-DD.', 
    UNIQUE KEY `one_vote_per_day` (`photo_id`,`facebook_id`,`date`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 

这里是我试图修改我的SQL查询来获取投票数:

SELECT 
    users.facebook_id, 
    users.first_name, 
    users.last_name, 
    photos.filename, 
    photos.description, 
    photos.finalist, 
    bookmarks.photo_id AS bookmark, 
    count(votes.*) AS vote_count 
FROM `photos`, `users` 
LEFT JOIN votes ON votes.photo_id = 123 
LEFT JOIN bookmarks ON bookmarks.photo_id = 123 AND bookmarks.facebook_id = 123456789 
WHERE 
    users.facebook_id = photos.author AND 
    photos.id = 123 
LIMIT 1 

上述尝试导致了这个错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*) AS vote_count FROM `photos`, `users` LEFT JOIN votes ON votes.photo_id = 1' at line 9 
+0

您应该接受一些回答您的其他问题(使用绿色复选标记)工作 –

回答

1

该错误是由语法问题引起的。这是asterix。该查询正确执行,并根据需要:

SELECT 
    users.facebook_id, 
    users.first_name, 
    users.last_name, 
    photos.filename, 
    photos.description, 
    photos.finalist, 
    bookmarks.photo_id AS bookmark, 
    count(votes.photo_id) AS vote_count 
FROM `photos`, `users` 
LEFT JOIN votes ON votes.photo_id = 123 
LEFT JOIN bookmarks ON bookmarks.photo_id = 123 AND bookmarks.facebook_id = 123456789 
WHERE 
    users.facebook_id = photos.author AND 
    photos.id = 123 
LIMIT 1 
+0

该查询,因为它由缺乏组返回只有一个值 –

相关问题