我正在尝试将两个表连接在一起。第一个表是“用户及其响应”,第二个表是“答案ID”,与用户可以选择的不同选项相对应。
在表2中,有一些用户输入的条目。
在表1中,任何用户输入的值都是Answer ID =1。除了Answer ID = 1外,响应ID和答案ID将匹配。
如何将两个表连接在一起?
我加入了标识符,但是由于每个标识符都有多个,因此会重复。
代码段1 :
Select *
from Table1
Join Table2 on Table1.identifier = Table2.identifier
否则,代码段2 :
select *
from Table1
Join Table2 on (Table1.identifier = Table2.identifier AND
table2.response_id = table1.answer_id)
此操作失败,因为Response_id为var,答案ID为INT。
当我对联接执行AND条件时,它将失败,因为用户输入如91.6,然后答案ID =1。
在此代码段中我什么也没得到,因为
将varchar值'91 .6'转换为数据类型int时转换失败。
例如,我希望表联接在答案id = 1时跳过匹配(因为answer_id = 1 = user输入)并匹配其他所有内容。
表1
Identifier Answer_iD Text
-------------------------------------
1 2 Male
1 3 Female
2 1 User Entered
3 2 Answer1
3 3 Answer2
3 4 Answer3
表2
User Identifier Response_id
---------------------------
Andy 1 2
Andy 2 91.6
Andy 3 2
我想要这个输出:
User Identifier Response_id Answer_Id Text
--------------------------------------------
Andy 1 2 2 Male
Andy 2 91.6 1 User entered
Andy 3 2 2 Answer1
现在使用我的SQL代码段1
User Identifier Response_id Answer_Id Text
--------------------------------------------
Andy 1 2 2 Male
Andy 1 2 3 Female
我无权编辑任何表格,对了,我基本上是手动查找表格1中的每个标识符和answer_id,以查看其在表格中的含义。每个人都有100个标识符,因此很快就很累。
欢迎任何解决方法。
答案 0 :(得分:0)
您的问题的答案是这样。不明白你想要什么,但是...
Select user, t2.identifier, t2.response_id, isnull(t1.answerid,t3.answerid)
From table2 t2
Left join table1 t1 on t1.identifier=t2.identifer and t1.answerid=t2.responseid
Left join table1 t3 on t3.identifer= t2.identifier and t3.answerid=1