2015-07-10 8 views
0

我在3表如下SQL查詢在加入3個表

表Student1:

id status amount Name   date 
1  0  4500  ram   04/02/2012 
2  0  2000 shyam   05/09/2013 
4  0  1500 ghanshyam  08/11/2014 

表STUDENT2:

id status amount Name   date 
3  0  4500  gopal  04/02/2012 
2  0  8000 radheshyam 15/11/2013 
4  1  1500 ghanshyam 18/10/2015 

表學生三:

id status amount Name   date 
1  1  4500  ram   04/02/2012 
2  0  6500  radhe  11/11/2014 
3  1  4500  gopal  04/02/2012 

除外結果條件:

1)從組合3個表中選擇具有唯一「ID」的記錄。

2)更新相應記錄的字段「日期」,如果狀態= 1的同一記錄的同名,金額在3個表中的任何一箇中。 3)如果在合併3個具有相同「id」但其他字段不同(即相同的id但不同的名稱,數量,日期)的表後將2個或多個記錄添加到最終結果中,但是我的追加1, 11,111給他們。

最終結果可以預料:

id status amount Name   date 
1  1  4500  ram   04/02/2012 
2  0  2000 shyam   05/09/2013 
21 0  8000 radheshyam  15/11/2013 
211 0  6500  radhe   11/11/2014 
3  1  4500  gopal   04/02/2012 
4  1  1500 ghanshyam  18/10/2015 

的Sql小提琴

CREATE TABLE Student1 
    (`id` int,`status` int,`amount` int , `Name` varchar(10), `date` varchar(55)) 
; 

INSERT INTO Student1 
    (`id`,`status`,`amount`, `Name`, `date`) 
VALUES 
    (1,0,4500, 'ram', '04/02/2012'), 
    (2,0,2000, 'shyam', '05/09/2013'), 
    (4,0,1500, 'ghanshyam', '08/11/2014') 
; 

CREATE TABLE Student2 
    (`id` int,`status` int,`amount` int , `Name` varchar(10), `date` varchar(55)) 
; 

INSERT INTO Student2 
    (`id`,`status`,`amount`, `Name`, `date`) 
VALUES 

    (3,0,4500, 'gopal', '04/02/2012'), 
    (2,0,8000, 'radheshyam', '15/11/2013'), 
    (4,1,1500, 'ghanshyam', '18/10/2015') 
; 

CREATE TABLE Student3 
    (`id` int,`status` int,`amount` int , `Name` varchar(10), `date` varchar(55)) 
; 

INSERT INTO Student3 
    (`id`,`status`,`amount`, `Name`, `date`) 
VALUES 

    (1,1,4500, 'ram', '04/02/2012'), 
    (2,0,6500, 'radhe', '11/11/2014'), 
    (3,1,4500, 'ghanshyam', '04/02/2012') 
; 

查詢:

SELECT * FROM Student1 
FULL OUTER JOIN Student2 
ON Student1.Name = Student2.Name 

錯誤:

check the manual that corresponds to your MySQL server version for the right syntax to use near 'OUTER JOIN Student2 ON Student1.Name = Student2.Name' at line 2 
+3

爲什麼你有三張相同列的表?你的數據設計似乎有問題。 –

+0

真的。在這種情況下,** ** UNION **就足夠了。其實,** 2 **聯盟。 –

+0

所有這三個表都來自不同的來源。所以結合所有3獲得決賽桌將被轉移到所有來源作爲更新表 –

回答

2

這只是這三個表格之間的聯合。