我有一个活动软件。注册活动的个人可以找到一张桌子 和一个表格,用于注册活动的团队。个人和团队都可以报名参加同一活动。我还有一张衬衫桌子。此表将衬衫与个人或衬衫与团队相关联,团队衬衫将有多行,因为团队超过1个人。这是结构。
Individuals
-id
-event_id
-member_id
Teams
-id
-event_id
-team_name
shirts
-id
-entity_id
-shirt_id
-is_team
起初我有一个单独的衬衫桌和一个单独的团队衬衫桌,并试图union all
他们无济于事。所以现在我有一个衬衫表,entity_id
是个人ID或团队ID,is_team
指定哪个表。
我正在与join
挣扎,以某种方式根据event_id
获得个人和团队的所有衬衫。我必须展示所有个人衬衫和所有团队衬衫。
我可以将union
语句粘贴到我的其他表结构中,但我没有显示join
的内容。我只是想朝着正确的方向迈出一步。
答案 0 :(得分:1)
这可能是你需要的
select s.id,
s.shirt_id,
case
when s.is_team = 0 then i.member_id
else
t.team_name
END
as entity
from shirts s
left join Individuals i on i.id = s.entity_id AND s.is_team = 0
left join Teams t on t.id = s.entity_id AND s.is_team = 1