2011-11-07 9 views
2

2つのテーブルで結合を実行していますが、何か問題があります。関心のMysqlがクエリに参加し、レコードのリストを取得して投票に参加する

テーブル:「写真」、「投票」、「週」

私はそれに含まれている写真の一覧を、プルアップクエリを実行しようとしています、投票の合計額」について週 "と表示されます。

'vote'テーブルは、photo_id、week_id、user_idの外部キーで構成されています。これにより、投票がどの「週」に配置されたのかを把握することができます。また、週は時間枠ではなくエンティティと考えることができます。

これは私がこれまで持っているものです。

SELECT *, COUNT(*) as `weekly_votes` 
FROM (`photo`) 
JOIN `vote` ON `vote`.`photo_id` = `photo`.`id` 
WHERE `vote`.`week_id` = '6' 
GROUP BY `photo`.`id` 

問題は、これが指定された週の票テーブルに票を持っている写真の一覧をプルアップしますが、ない写真はありません投票場合に返されませんですその週に与えられている。

基本的には:だけに

WHERE `vote`.`week_id` = '6' 

ニーズが参加する声明の中でのものに適用され、写真は返却制限からそれを防ぐことはできません。少なくとも私はいくつかの種類のOUTER結合を使用する必要があることは知っていますが、WHERE節はまだそれが動作しないようにすると思います。

私の質問が意味をなさないことを願っています...

答えて

3

外部結合が必要です。外部結合にwhere条件のみを適用するため、join条件でweek_idを指定する必要があります。

LEFT JOIN `vote` ON `vote`.`photo_id` = `photo`.`id` AND `vote`.`week_id` = '6'