Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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 - Fatal编程技术网

MySQL-一行中有多个值

MySQL-一行中有多个值,mysql,Mysql,我有以下表格: 表格用户: id_user | name | job --------|------|---- 1 | John | Director 2 | Lila | Assistant 3 | Paul | Director 4 | Jude | Assistant 表格位置: id_site | city --------|------- 110 | Paris 111 | London 表格联系人: id_us

我有以下表格:

表格用户:

id_user | name | job
--------|------|----
1       | John | Director
2       | Lila | Assistant
3       | Paul | Director
4       | Jude | Assistant
表格位置:

id_site | city 
--------|-------
110     | Paris 
111     | London 
表格联系人:

id_user | id_site | is_assistant | is_director
--------|---------|--------------|------------
1       | 110     | NULL         | 1
2       | 110     | 1            | NULL
3       | 111     | NULL         | 1
4       | 111     | 1            | NULL
让我解释一下。我公司有不同的用户表中的用户;公司在表站点中的不同位置,最后是将表用户与表站点关联起来的表联系人

我的问题是:

SELECT 
site.*,
`assistant`.`job` AS "Assistant Job",`assistant`.`name` AS "Assistant name", 
`directors`.`job` AS "Job director",`directors`.`name` AS "Director name"
FROM `site`
LEFT OUTER JOIN contact ON contact.id_site = site.id_site                   
LEFT OUTER JOIN `users` AS assistant ON `contact`.`id_user` = `assistant`.`id_user` AND `contact`.`is_assistant` = "1"
LEFT OUTER JOIN `users` AS directors ON `contact`.`id_user` = `directors`.`id_user` AND `contact`.`is_director` = "1"
ORDER BY site.id_site
查询很正常,但问题是我有如下结果:

id_site | city   | Assistant Job | Assistant name | Job director | Director name
--------|--------|---------------|----------------|--------------|-------------- 
110     | Paris  | NULL          | NULL           | Director     | John
110     | Paris  | Assistant     | Lila           | NULL         | NULL
111     | London | NULL          | NULL           | Director     | Paul
111     | London | Assistant     | Jude           | NULL         | NULL
我希望所有信息都放在同一行上,而不是放在几乎相同的两行上。我想要一些像:

id_site | city   | Assistant Job | Assistant name | Job director | Director name
--------|--------|---------------|----------------|--------------|-------------- 
110     | Paris  | Assistant     | Lila           | Director     | John
111     | London | Assistant     | Jude           | Director     | Paul
我希望我说得够清楚了。你能帮我吗

多谢各位


Stefey

如果您将两个
联系人
ID放在同一行,它应该可以工作。问题是,因为它连接到两行,并且连接到拆分的行。因此,如果您两次加入联系人表(为
is_director
is_assistant
添加了第二个子句),那么每个联系人表应该只有一个结果。然后加入各自的
用户

SELECT 
    site.*,
    `assistant`.`job` AS "Assistant Job",
    `assistant`.`name` AS "Assistant name", 
    `directors`.`job` AS "Job director",
    `directors`.`name` AS "Director name"
FROM 
    `site`
LEFT OUTER JOIN 
    `contact` AS ContactAssistant
    ON ContactAssistant.id_site = site.id_site 
    AND ContactAssistant.is_assistant = "1"   -- Add this clause here
LEFT OUTER JOIN 
    `contact` AS ContactDirector
    ON ContactDirector.id_site = site.id_site 
    AND ContactDirector.is_director = "1"     -- Add this clause here             
LEFT OUTER JOIN 
    `users` AS assistant 
    ON ContactAssistant.`id_user` = `assistant`.`id_user` 
    -- AND `contact`.`is_assistant` = "1" -- No longer needed
LEFT OUTER JOIN 
     `users` AS directors 
     ON ContactDirector.`id_user` = `directors`.`id_user` 
     -- AND `contact`.`is_director` = "1" -- No longer needed
ORDER BY site.id_site

不相关,您的
是助理
还是
是主管
字段
(微小)INT
还是
VARCHAR
?我假设它们是数字的,所以您可能希望确保将它们视为数字。

看起来您需要调整结果。。如果您可以访问PHP,我认为您最好解决PHP中的数据显示问题,而不是SQL查询中的数据显示问题,正如对“重复问题”的回答所建议的那样。也就是说,这种方法也有很多例子。非常感谢!!!我只是根据我的查询对其进行了调整,这非常有效。is_助理和is_主管都是布尔值!再次感谢,太棒了!如果它解决了你的问题,请随意接受我的回答:)