2017-02-18 41 views
0

我有三個表(這些是演示表而不是實際表)。 我可以使用JOIN從test1和test2獲取數據,但在特定條件下無法從test3獲取數據。SQL連接。從三個表中獲取數據

在下面給出的表中ID3 = ID-ID2(兩個ID使用 - 分開,並用作test3中的主鍵)。

當test1和test2中存在ID-ID2(如果存在)以及所有列(isShipped = default_value,當test3中不存在ID1-ID2時)時,我想獲得is3的isShipped值。

enter image description here

+0

可以請你也加入foriegn鍵引用.....? –

+0

請求您添加樣本輸入數據和輸出數據。它會真的幫助。 – Tajinder

+0

正在加入時,它將test1的ID與test2的ID相加。但是,test3中沒有ID,因此您無法加入。 – 2017-02-18 14:39:06

回答

0

Test3的與任何表沒有關係。您需要實現另一個獨特的智能標識符,以便將您可推斷的可識別三個表格之間的關係鏈接關聯起來。

0

你想要的條件ID3 = ID - ID2是met.And你也想擁有全部來自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; 
+0

在mysql中沒有完全加入 - 你有mysql替代嗎?此外,id3似乎是以id-id2形式組成的複合鍵。 –

+0

那麼我使用oracle sql.I相信那麼OP需要用MySQL中的類似內容替換完整的外連接。 – 2017-02-18 15:43:01

+0

您在Oracle中使用隱式連接? –

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

+0

您可以使用顯式連接而不是拒絕隱式連接來做到這一點嗎?另外+不是mysql中的連續快捷鍵。 –

+0

我更新以反映顯式連接。基於SQL Fiddle,它看起來好像是+作爲concat。 – sschmitz

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) 
相關問題