MySQL:如何通过映射表访问另一个表的列
我正在尝试为任务创建一个数据库,其中有一个任务表、一个人员表和一个人员任务分配表。 现在,我尝试使用select语句访问任务表,同时获取所有分配的人员,但没有任何工作。(因为任务也分配给其他表) 有没有一种方法或者我必须使用几个语句来实现这一点 以下是我创建表格的方式:MySQL:如何通过映射表访问另一个表的列,mysql,database,Mysql,Database,我正在尝试为任务创建一个数据库,其中有一个任务表、一个人员表和一个人员任务分配表。 现在,我尝试使用select语句访问任务表,同时获取所有分配的人员,但没有任何工作。(因为任务也分配给其他表) 有没有一种方法或者我必须使用几个语句来实现这一点 以下是我创建表格的方式: CREATE TABLE Locations (ID INT AUTO_INCREMENT, LocationID VARCHAR(255), PRIMARY KEY (ID));
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));
这是最重要的
我不希望我的加入像
SELECT (FirstName, LastName, TaskName) FROM ((Assinment INNER JOIN Tasks ON
Assinment.TaskID = Tasks.ID) INNER JOIN Persons ON Assinment.PersonID =
Persons.ID)
因为tasks表有更多的联接(例如位置和优先级),所以我希望我的查询从
SELECT (ID, TaskName, FirstName, LastName, LocationName) FROM Tasks [...]
所以我可以通过任务的id获取所有数据
然后输出应该给我这个
谢谢你的帮助:)
编辑
添加的输出和所需的输入现在更加指定了您可以尝试子查询:
SELECT column-names
FROM table-name1
WHERE value IN (SELECT column-name
FROM table-name2
WHERE condition)
“我不想要这样的东西”…为什么不呢?该查询看起来应该可以完成这项工作(除了一些语法问题)。如果您使用WHERE子句将其限制为特定任务,那么您将获得分配给该任务的所有人员<代码>从助手内部选择FirstName、LastName、TaskName加入助手上的任务。例如,TaskID=Tasks.ID内部加入助手上的人员。PersonID=Persons.ID,其中Tasks.ID=1。请注意,与您的示例相比,没有多余的括号,这些括号将导致MySQL中出现语法错误您的查询看起来像MS Access语法。要在这里得到准确的答案,您应该向我们展示您的预期输出。标记向下,因为如果您不想使用联接,我认为您确实需要告诉我们为什么不使用。嗨。清楚地说出输入的输出应该是什么。(不是一句“你想要什么&你不想要什么”的代码示例。)阅读并付诸行动。PS请清楚地格式化代码。