如何通过ID将列从另一个表引入到表中?

时间:2019-08-20 08:33:29

标签: mysql sql database

我有这张表People,Ticket和Report。

+----------+-------+-----+
| idPeople |  Name | Age |
+----------+-------+-----+
|        1 | Name1 |  21 |
|        2 | Name2 |  37 |
|        3 | Name3 |  28 |
+----------+-------+-----+

我想用People表中的Name和Age列替换ForeingKey idPeople。

+----------+------------+------------+----------+
| idTicket | ticketCol2 | ticketCol3 | idPeople |
+----------+------------+------------+----------+
|        5 | True       | 01/06/99   |       1 |
|        6 | False      | 01/06/99   |       2 |
|        7 | True       | 01/06/99   |       4 |
+----------+------------+------------+----------+

在“报表”表中,将前一张表“票证”中的“前导密钥” idTicket替换为“ ticketCol2”,“名称”和“年龄”,并替换列(“ idPeople by Name,Age”)。

+----------+----------+------------+------------+
| idReport | idTicket | ReportCol3 | ReportCol4 |
+----------+----------+------------+------------+
|        1 |        5 | 01/06/99   | blabla     |
|        2 |        7 | 01/06/99   | asdfdd     |
|        2 |        6 | 01/06/99   | fooboo     |
+----------+----------+------------+------------+

我的结果应该像这张表,并且必须在一个查询中完成。

+----------+------------+------------+------------+------------+------+-----+
| idReport | ticketCol2 | ticketCol3 | ReportCol3 | ReportCol4 | Name | Age |
+----------+------------+------------+------------+------------+------+-----+
|        1 | 01/06/99   | abcd       | blabla     |     123456 | Name |  20 |
|        2 | 01/06/99   | bcda       | asdfdd     |     321456 | Name |  23 |
|        3 | 01/06/99   | asdf       | fooboo     |     123456 | Name |  28 |
+----------+------------+------------+------------+------------+------+-----+

我尝试用LEFT JOIN替换前键并将“名称”和“年龄”列带到“票证”表中,但是现在我应该用“票证中的列”替换idTicket的最后一部分不起作用。

我已经阅读了有关嵌套JOIN的文章,但是我不太了解它,我真的很感谢我如何做或应该研究什么的一些想法。嵌套联接是否正确?

我尝试完成表格票证的查询。

SELECT Ticket.ticketCol2, Ticket.ticketCol3, p.Name 'Name', p.Age 'Age'
       from Ticket
left join people p on (Ticket.idPeople=p.idPeople);

1 个答案:

答案 0 :(得分:2)

尝试这样的事情:

SELECT Report.idReport, 
       Ticket.ticketCol2, 
       Ticket.ticketCol3, 
       Report.ReportCol3, 
       Report.ReportCol4, 
       People.Name, 
       People.Age 
FROM People
LEFT JOIN Ticket ON Ticket.idPeople = People.idPeople
LEFT JOIN Report ON Report.idTicket = Ticket.idTicket

@RiggsFolly 一样,Ticket.idPeoplePeople.idPeople不匹配,因此不会匹配任何行。