对于简约的标题我很抱歉,但我不知道怎么简单地描述它。我有三张桌子:
分组表
ID | Genre
-----------------
1 | Action
2 | Adventure
3 | Drama多对多桌
GroupID | ElementID
-----------------
3 | 1
1 | 2
2 | 2
2 | 3
3 | 3以及元素表
ID | Element
-----------------
1 | Pride and Prejudice
2 | Alice in Wonderland
3 | Curious Incident Of A Dog In The Night Time一切都很好,很简单。我要实现的选择如下
ID | Element | Genre
-------------------------------------------------------------
1 | Pride and Prejudice | Drama
2 | Alice in Wonderland | NULL
3 | Curious Incident Of A Dog In The Night Time | Drama我希望选择all,表元素中的元素,并将字段设置为、Drama、或null。
我正试着在MySQL做这件事。
提前谢谢你
发布于 2013-07-21 16:34:18
使用这个小技巧是可能的(在多到多表上的外部连接,约束条件是GroupID必须是3(对于戏剧)。
http://sqlfiddle.com/#!9/01cf3/1
SELECT elements.ID, elements.Element, groups.Genre
FROM elements
LEFT OUTER JOIN group_elements
ON elements.ID = group_elements.ElementID
AND group_elements.GroupID = 3
LEFT OUTER JOIN groups
ON group_elements.GroupID = groups.IDLEFT OUTER JOIN的意思是:从前面的表(如果需要的话,在LEFT OUTER JOIN的左边)取下所有行,即使在下面的表中没有对应的行。条件ON elements.ID = group_elements.ElementID AND group_elements.GroupID = 3说,如果我们找到任何与我们的ElementID相匹配的东西,它也必须是一个戏剧(GroupID = 3)。然后,我们在groups表上做另一个左外部联接,这使我们能够显示类型列,如果元素不是戏剧,则为NULL。
https://stackoverflow.com/questions/17774373
复制相似问题