加入3个具有不同列名的表

时间:2014-04-08 02:50:20

标签: mysql database join union

我有一个活动软件。注册活动的个人可以找到一张桌子 和一个表格,用于注册活动的团队。个人和团队都可以报名参加同一活动。我还有一张衬衫桌子。此表将衬衫与个人或衬衫与团队相关联,团队衬衫将有多行,因为团队超过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的内容。我只是想朝着正确的方向迈出一步。

1 个答案:

答案 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

http://www.sqlfiddle.com/#!2/cbb687/5