私は次のテーブルを持っています:
CREATE TABLE `accommodations` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
)
CREATE TABLE `accommodations_exclude` (
`id_accommodation` int(11) unsigned NOT NULL,
`id_course` int(11) NOT NULL,
UNIQUE KEY `id_course` (`id_course`,`id_accommodation`)
)
宿泊施設の表には4つのレコードがあり、accommodations_excludeにはさらに多くのレコードがあります。ここで、accommodationsテーブルのすべてのレコードを常に取得し、追加フィールドとして結合して、accommodations_excludeテーブルにも宿泊施設が存在するかどうかを確認するクエリが必要です。
例えば; 宿泊施設_excludeには、id_accommodation = 2、id_course=16の行が1つあります。
次のような結果セットが必要です。
accommodation.id, accommodation.name, accommodation_exclude.id_accommodation, accommodation_exclude.id_course
1,'acco 1',null,null
2,'acco 2',2,16
3,'acco 3',null,null
4,'acco 4',null,null
私が今持っているクエリはこれです:
SELECT *
FROM accommodations a
LEFT JOIN accommodations_exclude ae ON a.id = ae.id_accommodation
WHERE ae.id_course = 16
しかし、これは私に結果セットだけを与えます
2,'acco 2',2,16
null値を持つべき宿泊施設ではありません
私がここで間違っていることについて何か考えはありますか?