【问题标题】:Dynamic Join of Tables (MySQL)表的动态连接 (MySQL)
【发布时间】:2011-08-15 21:02:25
【问题描述】:

我正在尝试找出在给定设置中加入表格的正确方法:

表0: Col1 Col2 Col3 科尔克斯 可乐

Col1-3 是 3 个不同表的外键 - 它们可能有也可能没有值(例如 col1 可能为空,或者 col 2 和 3 都为空,或无)。我要做的是构建一个选择查询,当且仅当一个值存在时才连接到表 1-3。

我希望我解释得很好。

【问题讨论】:

  • 你的意思是如果所有 3 个值都存在吗?因为否则 join 的行为将是仅当列中的值存在时才加入。
  • 对不起,我想我没有解释清楚。假设这 3 列是“UserID”、“ShowID”、“LocationID”。对于某些行,只有 ShowID 会有一个值——在这种情况下,我想返回 Show.* 的值,对于其他行,LocationID 和 UserID 都可能有一个值(在这种情况下,我想要 Location.* 和 User.* 的值- 我希望所有 Show.* 列都为空)。所有表的标准连接都不会返回任何行。

标签: mysql sql select join


【解决方案1】:

听起来你只是要求left join(或另一种outer join):

select table0.*, user.*, show.*
from table0
left join user on user.id=table0.userid
left join show on show.id=table0.showid

一个典型的结果可能是

table0.id  table0.userid  table0.showid  user.id  user.name  show.id  show.name
1          1              NULL           1        Bob        NULL     NULL
2          NULL           1              NULL     NULL       1        Flintstones

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-28
    • 2014-10-27
    • 2013-10-20
    • 2018-06-04
    相关资源
    最近更新 更多