2017-06-02 88 views
0

我有兩種類型的產品。我爲這些(t1,t2)創建了兩個表。我也有一個事務表(T3),我想加入T3與T1,但如果沒有匹配,則加入T2有條件加入mysql

T1

|p_id|p_description|color| 

|0001| xyz  |blue | 
|0002| bcd  |red | 

T2

|p_id|p_description|weight||size|type| 

|e-01| xmay  |3.25| | 50| s | 
|s-02| cmay  |2.32| | 25| x | 

T3

|trn_id| p_id |cost| 

| 1 | 0001 | 150| 
| 2 | s-02 | 225| 
+0

的if else或case語句 – Haris

+1

這不應該是兩個具有不同列數的產品表格擺在首位。一個產品表,其中包含所有產品都具有的基本字段 - 其餘的則放入產品屬性表中,形式爲「product id |屬性id |屬性值「 – CBroe

回答

2

您可以使用UNION語句:

SELECT a.trn_id, a.p_id, a.cost, b.p_description 
FROM t3 a 
LEFT JOIN t1 b ON a.p_id = b.p_id 
WHERE b.p_id IS NOT NULL 
UNION SELECT a.trn_id, a.p_id, a.cost, b.p_description 
FROM t3 a 
LEFT JOIN t2 b ON a.p_id = b.p_id 
WHERE b.p_id IS NOT NULL 

此代碼將讓你的表格與T3一致的所有結果與T1,並在此之後,在同一個表,從T3一致的結果與T2