2014-11-03 49 views
0

兩個不同的表這是表1:我如何加入MySQL中

 
    id name m1 m2 m3 total itemno 
    1 raj  10 10 10 30  1 
    2 ram  60 60 60 180  1 
    3 kumar 70 70 70 210  1 
    4 kanna 50 50 50 150  1 
    5 vivek 64 64 91 200  1 
    5 vivek 90 90 90 270  2 

這是表2:

 
    id name   mark1  mark2 mark3 itemno 
    101 vivek   78  78  78  1 
    102 vivekkanna  89  88  78  1 
    103 rajagopalan  97  90  98  1 
    104 kumar   69  54  56  1 
    101 vivek   90  90  90  2 

我想這兩個表像這樣加入到結果集看起來像這個:

 
    id name m1 m2 m3 total mark1  mark2 mark3 item no 
    1 raj  10 10 10 30  0   0  0  1 
    2 ram  60 60 60 180 0   0  0  1 
    3 kumar 70 70 70 210 69  54  56  1 
    4 kanna 50 50 50 150 0   0  0  1 
    5 vivek 64 64 91 200 78  78  78  1 
    5 vivek 90 90 90 270 90  90  90  2 

+3

您的餐桌設計是可疑的。你如何區分2 Vivek? – Shiva 2014-11-03 04:55:13

+0

爲什麼不把全部數據存儲在一張表中?仍然如果你想分開存儲它在兩個表中,然後存儲table1_id在表2 – SKG 2014-11-03 04:55:35

+0

這是示例表 – VK92 2014-11-03 04:57:11

回答

0

似乎你想要一個常規的L​​EFT JOIN,如果table2中的行不存在,返回一個默認值;

SELECT t1.id, t1.name, t1.m1, t1.m2, t1.m3, 
     COALESCE(t2.mark1, 0) mark1, COALESCE(t2.mark2, 0) mark2, t1.itemno 
FROM table1 t1 
LEFT JOIN table2 t2 ON t1.name = t2.name AND t1.itemno = t2.itemno 
ORDER BY t1.id, t1.itemno 

An SQLfiddle to test with

我們使用LEFT JOIN以獲取不與表1中的一排匹配所有表2字段的默認值爲NULL,則COALESCE把他們變成0代替。

+0

之間的'join'謝謝你先生Joachim Isaksson – VK92 2014-11-03 05:59:24