我有以下表格:
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 条记录,在住宿排除中还有更多。现在我想要一个查询,它总是给我来自住宿表的所有记录,并作为额外字段加入以查看住宿是否也存在于住宿排除表中。
例如; 在 accommodation_exclude 中有一行 id_accommodation = 2, id_course = 16。
我想要一个显示以下内容的结果集:
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
而不是应该有空值的住宿
知道我在这里做错了什么吗?