Php Mysql表连接来自2个表的记录,但获取所有记录,即使是带有空字段的记录
我有2个表,希望从表“klanten”中获取所有记录,“automaten”记录与bedrijfs\u id匹配 这就是我目前所拥有的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 = `
$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!