0

今日まで、これはデータベースから写真について知る必要があるすべてを取得するクエリです。

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
4

1 に答える 1

1

このエラーは、構文の問題が原因でした。アスタリスクでした。このクエリは適切に実行され、必要に応じて実行されます。

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
于 2012-10-05T06:47:07.053 に答える