MySQL:如何通过映射表到达另一个表的列

时间:2018-07-25 14:27:26

标签: mysql database

我正在尝试创建一个任务分配数据库,其中有一个任务表,一个人表和一个人任务分配表。 现在,我尝试使用select语句访问任务表,并同时获取所有分配的人员,但无济于事。 (因为还将任务分配给其他表) 有没有办法或者我必须为此使用几个语句?

这是我创建表格的方式:

CREATE TABLE Locations (ID INT AUTO_INCREMENT, LocationID VARCHAR(255),
                        PRIMARY KEY (ID));

CREATE TABLE Persons (ID INT AUTO_INCREMENT, FirstName VARCHAR(255), LastName     
                      VARCHAR(255), PRIMARY KEY (ID));

CREATE TABLE Tasks (ID INT AUTO_INCREMENT , TaskName VARCHAR(255), LocationID 
                    INT, PRIMARY KEY (ID),
                    FOREIGN KEY (LocationID) REFERENCES Locations(ID));

CREATE TABLE Assinment (TaskID INT, PersonID INT,
                        PRIMARY KEY (TaskID, PersonID), FOREIGN KEY (TaskID) 
                        REFERENCES Tasks(ID), FOREIGN KEY (PersonID) 
                        REFERENCES Persons(ID));

这是UML

我不希望我在Assinment表上加入联接

SELECT (FirstName, LastName, TaskName) FROM ((Assinment INNER JOIN Tasks ON 
Assinment.TaskID = Tasks.ID) INNER JOIN Persons ON Assinment.PersonID = 
Persons.ID)

因为任务表具有更多的联接(例如位置和优先级),所以我希望查询以

开始
SELECT (ID, TaskName, FirstName, LastName, LocationName) FROM Tasks [...]

所以我可以通过任务的ID获取所有数据

然后输出应该给我这个table

感谢帮助:)

编辑

添加了输入并现在指定了所需的输入

1 个答案:

答案 0 :(得分:0)

您可以尝试子查询:

SELECT column-names
  FROM table-name1
WHERE value IN (SELECT column-name
                   FROM table-name2 
                  WHERE condition)