我们可以使用连接操作并同时对不同的列进行限制吗?我想基于另一个数据库中的三个表(在示例中称为DB2)在数据库(在示例中称为DB1)上创建一个表,其中新表中的某些列在其他列中有特定条目时填充了entrys (在示例中,表2中“attributeID”列中的“4”表示“gender”列中的条目,“5”表示“age”列中的条目;表3中“attributeID”列中的“7”表示“街道”栏中的条目。 - >如果是,那怎么办?
两个数据库都在同一台服务器上,而DBMS是相同的。 ID1和ID2基于DB2中的table1; ID2,attributeID和值(根据attributeID中的条目写入性别或年龄)基于DB2中的table2; ID2 attributeID和value(当attributeID中的条目为7时写入street的位置)基于DB2中的table3。
示例数据:
表1:
ID1 ID2
1 2
2 4
3 5
表2:
ID2 attributeID value
2 3 Kahtrin ->an example entry which is not relevant
2 4 miss
2 5 22
4 1 active ->an example entry which is not relevant
4 4 EMPTY/NULL
4 5 47
5 4 mr
5 5 34
5 6 Hindu ->an example entry which is not relevant
表3
ID2 attributeID value
2 5 20% ->an example entry which is not relevant
2 7 middlestreet 40
4 4 chinese ->an example entry which is not relevant
4 7 churchstreet 12
5 3 3Euro
5 7 EMPTY/NULL
预期结果
表4:
ID1 ID2 gender age street
1 2 miss 22 middlestreet 40
2 4 47 churchstreet 12
3 5 mr 34
这是我尝试过的(从我使用DB1的观点来看):
INSERT INTO table4
(id1,
id2,
gender,
age,
street)
SELECT t1.id1,
t1.id2,
t2.value
t2.value
t3.value
FROM db1.table1 t1
LEFT JOIN db1.table2 t2
ON t1.ID2=t2.ID2
AND value = 4 OR 5
LEFT JOIN db1.table3 t3
ON t1.ID2=t3.ID2
AND value = 7;
答案 0 :(得分:1)
您选择错误(不产生预期结果)您应该使用别名
来使用表t2两次
你应该明确地将表t3分配给值
SELECT t1.id1,
t1.id2,
t2.value
t4.value
t3.value
FROM db1.table1 t1
LEFT JOIN db1.table2 t2
ON t1.ID2=t2.ID2
AND value = 4
LEFT JOIN db1.table2 t4
ON t1.ID2=t4.ID2
AND value = 5
LEFT JOIN db1.table3 t3
ON t1.ID2=t3.ID2
AND t3.value = 7;