从行到列的SQL数据引用另一列

时间:2018-01-27 02:29:23

标签: sql database select

父表

+====+===========+
| id | firstname |
+====+===========+
|  1 | abc       |
+----+-----------+
|  2 | bcd       |
+----+-----------+
|  3 | cde       |
+----+-----------+

学生关系表

+==========+==========+===========+
| relation | parentid | studentid |
+==========+==========+===========+
| father   |        1 | s0001     |
+----------+----------+-----------+
| mother   |        2 | s0001     |
+----------+----------+-----------+
| father   |        3 | s0002     |
+----------+----------+-----------+

学生表

+=======+===========+==========+=========+======+
|  id   | firstname | lastname | address | sex  |
+=======+===========+==========+=========+======+
| s0001 | shdj      | khb      | jxx     | male |
+-------+-----------+----------+---------+------+

如果您可以帮我创建一个将返回studentidnamefather namemother namesex,{{ 1}}。

1 个答案:

答案 0 :(得分:1)

根据您发布的内容,然后在评论中更新,我认为这应该适合您。我相信具有更高级SQL技能的人可以发布更优雅的方式来执行此操作。但这就是我想出来的:

SELECT DISTINCT cte.studentid
    ,studentFirstName
    ,studentLastName
    ,father.fatherFirstName
    ,mother.motherFirstName
    ,sex
    ,address
FROM cte
LEFT JOIN father ON cte.studentid = father.studentid
LEFT JOIN mother ON cte.studentid = mother.studentid

以下是一个学生(杰夫琼斯)有两个父亲的例子(假设其中一个是继父):

example

这里有一些建议:

  
      
  1. 学习SQL语法基础知识(任何类型的MySQL,T-SQL等)
  2.   
  3. 了解FROM and JOIN
  4.   
  5. 在此处发布您的问题时,表格示例应该有更好的测试数据。 “asdfkj”,“shdsf”,“Asdjkfdjkf”非常难以   用来测试代码,因为没有你的上下文   看着。我意识到你只是发布一个例子和上下文   行的部分无关紧要,但它只是更容易   问题回答,并没有吓跑想要的人   回答你的问题。
  6.   

以下是您可以使用的DEMO,其中包含您提及的字段中的合理数据。