Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.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
Php Mysql表连接来自2个表的记录,但获取所有记录,即使是带有空字段的记录_Php_Mysql - Fatal编程技术网

Php Mysql表连接来自2个表的记录,但获取所有记录,即使是带有空字段的记录

Php Mysql表连接来自2个表的记录,但获取所有记录,即使是带有空字段的记录,php,mysql,Php,Mysql,我有2个表,希望从表“klanten”中获取所有记录,“automaten”记录与bedrijfs\u id匹配 这就是我目前所拥有的 $sql = " SELECT `automaten`.automaat, `automaten`.th_nummer, `klanten`.bedrijf, `klanten`.bedrijfs_id, `klanten`.plaats FROM klanten, automaten WHERE (`klanten`.bedrijfs_id = `

我有2个表,希望从表“klanten”中获取所有记录,“automaten”记录与bedrijfs\u id匹配

这就是我目前所拥有的

$sql = "
SELECT 
`automaten`.automaat,
`automaten`.th_nummer, 
`klanten`.bedrijf, 
`klanten`.bedrijfs_id, 
`klanten`.plaats 
FROM klanten, automaten 
WHERE (`klanten`.bedrijfs_id = `automaten`.bedrijfs_id) 
ORDER BY `klanten`.bedrijf ASC 
";
结果:

+------------+-------------+-----------+--from automaten--+------------+
153509       |  Amigo      | Smilde    |  Hot Rocks       |  6170155   |
153509       |  Amigo      | Smilde    |  Cash Attack     |  6410031   |
153512       |  Boekanier  | Steenwijk |  Red Hot Active  |  6980051   |
153512       |  Boekanier  | Steenwijk |  Turboplay       |  6550298   |
-----------------------------------------------------------------------
bedrijfs_id  |  bedrijf    | plaats    |  automaat        |  th_nummer |
+------------+-------------+-----------+------------------+------------+
表klanten 贝德里杰夫 贝德里杰夫斯 普拉茨 阿迪斯 telefoon 等等

自动机 贝德里杰夫斯 自动驾驶 努默

所以我想在没有任何Automat字段的情况下获得记录。(然后必须填写
注释:改进了格式,更正了拼写 Mysql表连接来自2个表的记录,但获取所有记录,即使是带有空字段的记录 我有2个表,希望从表“klanten”中获取所有记录,其中“automaten”记录与bedrijfs_id匹配


仍然没有有效的解决方案:(

我想你的意思是做一个
左连接

SELECT 
`automaten`.automaat,
`automaten`.th_nummer, 
`klanten`.bedrijf, 
`klanten`.bedrijfs_id, 
`klanten`.plaats 
FROM klanten
LEFT JOIN automaten 
ON `klanten`.bedrijfs_id = `automaten`.bedrijfs_id
ORDER BY `klanten`.bedrijf

这应该是您的解决方案:

$sql = "
    SELECT 
    `automaten`.automaat,
    `automaten`.th_nummer, 
    `klanten`.bedrijf, 
    `klanten`.bedrijfs_id, 
    `klanten`.plaats 
FROM klanten 
LEFT JOIN automaten 
ON `klanten`.bedrijfs_id = `automaten`.bedrijfs_id
 ORDER BY `klanten`.bedrijf ASC 
 ";
问候
V

必须使用左外连接:

您的查询将如下所示:

SELECT 
GROUP_CONCAT(`automaten`.automaat),
`automaten`.th_nummer, 
`klanten`.bedrijf, 
`klanten`.bedrijfs_id, 
`klanten`.plaats 
FROM klanten
LEFT OUTER JOIN automaten 
ON `klanten`.bedrijfs_id = `automaten`.bedrijfs_id 
GROUP BY bedrijfs_id,bedrijf,plaats
ORDER BY `klanten`.bedrijf ASC 

这看起来很好!!但是有没有可能在一个结果中得到全部,而不是2?153509-Amigo-Smilde-Hot Rocks-6170155 153509-Amigo-Smilde-Cash Attack-6410031这样的结果:153509-Amigo-Smilde-Hot Rocks-6170155-Cash Attack-6410031@richardvansoest,否,如果有多个匹配记录,则它们将显示为se分开的行,但您可以尝试group_concat(),但这不会产生您预期的结果。我将尝试这样一个案例:我有咖啡馆的客户(klanten)和两台赌博机(atomaten)所以我想把所有的客户和他们得到的wich自动机列在一行。我把表自动机放在了klanten表中。谢谢,这也行,但是当一个klanten上有两个“自动机”时,仍然会得到两个结果(表示客户)因此,在结果中,您只需要两个automat中的一个。您如何决定输出中应该使用哪一个?就像在相同的记录中使用逗号分隔的值??热石头,这种格式的现金攻击?尝试过这一点,但在结果中我看不到任何
自动执行器
。现在要开始了,今天晚些时候回来谢谢Neels!