我正在尝试创建一个任务分配数据库,其中有一个任务表,一个人表和一个人任务分配表。 现在,我尝试使用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。
感谢帮助:)
编辑
添加了输入并现在指定了所需的输入
答案 0 :(得分:0)
您可以尝试子查询:
SELECT column-names
FROM table-name1
WHERE value IN (SELECT column-name
FROM table-name2
WHERE condition)