0

我已经将一个事件建模为具有多个类别。

所以我有一张Event桌子和一张Event_Category桌子。该Event_Category表很明显:它有两列,theEvent ID和 the Category name

类别为HIKEFAMILYCLASS_OR_LECTURE等。

也许我脑子有问题,但我一生都无法弄清楚 SQL 查询来获取给定类别列表中的事件列表。

例如,我想要一个包含“HIKE”或“FAMILY”类别的事件列表。

有人可以帮忙吗?

4

3 回答 3

1
select * from events where id in (select distinct id from events_categories where category_id in (1,2))
于 2012-10-27T21:36:32.390 回答
0

这不是吗?

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')
于 2012-10-27T21:36:23.443 回答
0
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')
  );
于 2012-10-27T21:43:32.323 回答