我有三个表(这些是演示表而不是实际表)。 我可以使用JOIN从test1和test2获取数据,但是在特定条件下无法从test3获取数据。
在下面给出的表中,ID3 = ID-ID2(两个ID使用 - 分隔,并在test3中用作主键)。
我想从test3获取isShipped值,当存在ID-ID2(如果存在)以及test1和test2中的所有列时(isShipped = default_value,当test3中不存在ID1-ID2时)。
答案 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;
答案 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)