SQL Joins.Fetch来自三个表

时间:2017-02-18 14:16:32

标签: mysql sql join

我有三个表(这些是演示表而不是实际表)。 我可以使用JOIN从test1和test2获取数据,但是在特定条件下无法从test3获取数据。

在下面给出的表中,ID3 = ID-ID2(两个ID使用 - 分隔,并在test3中用作主键)。

我想从test3获取isShipped值,当存在​​ID-ID2(如果存在)以及test1和test2中的所有列时(isShipped = default_value,当test3中不存在ID1-ID2时)。

enter image description here

4 个答案:

答案 0 :(得分:0)

Test3与任何表都没有关系。您需要实现另一个独特的资源标识符,以便将您推断的可识别三个表之间的关系链接关联起来。

答案 1 :(得分:0)

您希望满足条件ID3 = ID - ID2。您还希望拥有test1和test2的所有属性,您可以使用full outer join并在where子句中声明您的条件,假设你的ID是整数,没有空。 N:B:这是你在Oracle数据库中所做的。用MySQL的类似语义对其进行更改,可能需要在线进行一些搜索。

SELECT  c.isShipped
FROM    test1 a full outer join
        test2 b,
        test3 c

WHERE   c.ID3 = a.ID - b.ID2;

答案 2 :(得分:0)

根据图片我假设ID是VARCHARS?也许尝试这样的事情:

SELECT t3.ID3, t3.isShipped
FROM test1 t1
JOIN test2 t2 ON t1.ID = t2.ID
JOIN test3 t3 ON t1.ID + '-' + t2.ID2 = t3.ID3;

SQL Fiddle Here

答案 3 :(得分:0)

对于mysql尝试

select t1.*,t2.*,t3.isshipped
from    test1 t1
join  test2 t2 on t2.id = t1.id
join    test3 t3 on t3.id3  = concat(t2.id,'-',t2.id2)