连接两个表A和B,其中A的列名应根据B中列的值与B连接

时间:2016-08-29 18:02:56

标签: join database-schema sql-server-2014

标题有点令人困惑,所以这里是我面临的问题的一个例子。

Table:
  FORM_QUESTION
Fields:
  student_id
  q1_ans
  q2_ans
  q3_ans
  q4_ans
  q5_ans

x--------------x----------x----------x----------x----------x----------x
|  student_id  |  q1_ans  |  q2_ans  |  q3_ans  |  q4_ans  |  q5_ans  |
x--------------x----------x----------x----------x----------x----------x
| 1            | A        | D        | B        | B        | E        |
| 2            | D        | C        | B        | A        | D        |
| 3            | B        | C        | D        | A        | B        |
x--------------x----------x----------x----------x----------x----------x

FORM_QUESTION表存储了每个问题的学生答案。

以下是第二张表的信息:

Table:
  FORM_VALID_ANS
Fields:
  question_id
  valid_answer

x---------------x----------------x
|  question_id  |  valid_answer  |
x---------------x----------------x
|  q1_ans       |  A             |
|  q1_ans       |  B             |
|  q2_ans       |  A             |
|  q2_ans       |  B             |
|  q2_ans       |  C             |
|  q2_ans       |  D             |
|  q3_ans       |  A             |
|  q4_ans       |  A             |
|  q4_ans       |  B             |
|  q5_ans       |  A             |
x---------------x----------------x

第二个表FORM_VALID_ANS存储特定问题的有效可接受答案。因此,根据上表,这是每个问题的可接受值列表:

q1_ans: A, B
q2_ans: A, B, C, D
q3_ans: A
q4_ans: A, B
q5_ans: A

正如您所看到的,FORM_VALID_ANS.valid_answer的值仅包括FORM_QUESTION的问题字段名称(" q1_ans"," q2_ans"," q3_ans" ," q4_ans"和" q5_ans")。我需要检查每个学生'回答以确保它们是可以输入的有效值,这在FORM_VALID_ANS.valid_answer字段中指定。

所需的输出,其中XXX表示无效值,所有其他值将回答值:

x--------------x----------x----------x----------x----------x----------x
|  student_id  |  q1_ans  |  q2_ans  |  q3_ans  |  q4_ans  |  q5_ans  |
x--------------x----------x----------x----------x----------x----------x
| 1            | A        | D        | XXX      | B        | XXX      |
| 2            | XXX      | C        | XXX      | A        | XXX      |
| 3            | B        | C        | XXX      | A        | XXX      |
x--------------x----------x----------x----------x----------x----------x

是否可以将这两个表连接在一起并产生这些结果(或类似的结果)?

0 个答案:

没有答案