Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL:如何通过映射表访问另一个表的列_Mysql_Database - Fatal编程技术网

MySQL:如何通过映射表访问另一个表的列

MySQL:如何通过映射表访问另一个表的列,mysql,database,Mysql,Database,我正在尝试为任务创建一个数据库,其中有一个任务表、一个人员表和一个人员任务分配表。 现在,我尝试使用select语句访问任务表,同时获取所有分配的人员,但没有任何工作。(因为任务也分配给其他表) 有没有一种方法或者我必须使用几个语句来实现这一点 以下是我创建表格的方式: CREATE TABLE Locations (ID INT AUTO_INCREMENT, LocationID VARCHAR(255), PRIMARY KEY (ID));

我正在尝试为任务创建一个数据库,其中有一个任务表、一个人员表和一个人员任务分配表。 现在,我尝试使用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));
这是最重要的

我不希望我的加入像

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请清楚地格式化代码。