我已经将一个事件建模为具有多个类别。
所以我有一张Event
桌子和一张Event_Category
桌子。该Event_Category
表很明显:它有两列,theEvent ID
和 the Category name
。
类别为HIKE
、FAMILY
、CLASS_OR_LECTURE
等。
也许我脑子有问题,但我一生都无法弄清楚 SQL 查询来获取给定类别列表中的事件列表。
例如,我想要一个包含“HIKE”或“FAMILY”类别的事件列表。
有人可以帮忙吗?
select * from events where id in (select distinct id from events_categories where category_id in (1,2))
这不是吗?
SELECT DISTINCT event_id
FROM event_category
WHERE category_name IN ('HIKE', 'FAMILY', 'CLASS_OR_LECTURE')
如果您想要的不仅仅是事件 ID:
SELECT DISTINCT (whatever)
FROM event JOIN event_category USING (event_id)
WHERE category_name IN ('HIKE', 'FAMILY', 'CLASS_OR_LECTURE')
Select
e.*
From
events e
Where
Exists (
Select 'x'
From event_category ec
Where ec.event_id = e.event_id
And ec.category_name in ('HIKE', 'FAMILY')
);