连接SQL表,其中“连接在”列上有用户提交的条目

时间:2018-08-27 23:46:02

标签: sql

我正在尝试将两个表连接在一起。第一个表是“用户及其响应”,第二个表是“答案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个标识符,因此很快就很累。

欢迎任何解决方法。

1 个答案:

答案 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