Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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:使用单个列在单行中显示为多个select列_Mysql_Sql - Fatal编程技术网

MySQL:使用单个列在单行中显示为多个select列

MySQL:使用单个列在单行中显示为多个select列,mysql,sql,Mysql,Sql,考虑这些示例表 表1中的E_id是主键。From和Assign_to是使用E_id引用的外键 我想展示这样一张表: 我不知道如何实施它。请共享返回所需表的SQL查询。您可以将连接到表1两次: SELECT t2.work_name, t1f.E_name AS `From`, t1a.E_Name AS `Assign_to` FROM Table2 t2 INNER JOIN Table1 t1f ON t1f.E_id = t2.`from` INNER

考虑这些示例表

表1中的E_id是主键。From和Assign_to是使用E_id引用的外键

我想展示这样一张表:


我不知道如何实施它。请共享返回所需表的SQL查询。

您可以将
连接到
表1
两次:

SELECT
    t2.work_name,
    t1f.E_name AS `From`,
    t1a.E_Name AS `Assign_to`
FROM Table2 t2
INNER JOIN Table1 t1f
    ON t1f.E_id = t2.`from`
INNER JOIN Table1 t1a
    ON t1a.E_id =t2.Assign_to

你可以用一个简单的临时表来解决这个问题。这不是解决问题的最复杂的方法,但解决方法很容易理解

步骤如下:

  • 使用表2中的所有数据创建一个表

  • 向该表添加两列以存储from和Assign_的名称值

  • 使用表1中的名称值更新列

  • 选择您的数据

MySQL代码

-- create temp-table
CREATE TABLE table2_temp 
SELECT  * FROM  table2;

-- add columns to enrich table with E_name from table1
ALTER TABLE table2_temp 
 ADD COLUMN E_name_from VARCHAR (125),
 ADD COLUMN E_name_assign_to VARCHAR (125);

-- update temp-table with names from table1

 -- for E_name_from
UPDATE table2_temp A
INNER JOIN table1 B ON (A.`from` = E_id)
SET A.E_name_from = B.E_name;

 -- for E_name_assign_to
UPDATE table2_temp A
INNER JOIN table1.B ON (A.Assign_to = E_id)
SET A.E_name_assign_to = B.E_name;

-- now you can select your date from the temp-table
SELECT
    work_name,
    E_name_from AS `From`,
    E_name_assign_to AS `Assign_to`
FROM
    table2_temp;

-- drop table after work is done
drop table if exists table2_temp ;

我们应该如何知道返回哪些工作名称,例如,Reading来自无处。