これは、これまでデータベース内の写真について知りたいと思っていたすべてを取得してきたクエリです。
SELECT
users.facebook_id,
users.first_name,
users.last_name,
photos.*,
bookmarks.photo_id AS bookmark
FROM
photos
JOIN users
ON photos.author = users.facebook_id
LEFT JOIN bookmarks
ON photos.id = bookmarks.photo_id
AND bookmarks.facebook_id = 123456789
WHERE photos.description <> ''
ORDER BY photos.id DESC
しかし、ここでもう 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 ;
そして、これが私がすでに試したことです:
SELECT
count(votes.photo_id) as vote_count,
users.facebook_id,
users.first_name,
users.last_name,
photos.*,
bookmarks.photo_id AS bookmark
FROM
photos
JOIN users
ON photos.author = users.facebook_id
LEFT JOIN votes
ON votes.id = photos.photo_id
LEFT JOIN bookmarks
ON photos.id = bookmarks.photo_id
AND bookmarks.facebook_id = 123456789
WHERE photos.description <> ''
ORDER BY photos.id DESC
明らかに、私は何か間違ったことをしています.
この方法は、1 枚の写真に関する情報のみが必要な場合にはうまく機能しますが、このクエリはすべての写真に対して一度に機能する必要があります...