2015-07-10 218 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

这只是这三个表格之间的联合。