简体   繁体   English

Mysql表联接来自2个表的记录,但获得所有记录,即使是具有空字段的记录

[英]Mysql table join records from 2 tables but get all records even the ones with empty fields

I have 2 tables and want to get all records from table ' klanten ' and where the ' automaten ' records are matching bedrijfs_id . 我有2个表,想要从表' klanten '中获取所有记录,并且其中' automaten '记录与bedrijfs_id匹配。

this is what i have so far. 这是我到目前为止所拥有的。

$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 
";

resultin in: 结果:

+------------+-------------+-----------+--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 |
+------------+-------------+-----------+------------------+------------+

table klanten bedrijf bedrijfs_id plaats adres telefoon etc. 表klanten bedrijf bedrijfs_id plaats adre telefoon等

table automaten bedrijfs_id automaat th_nummer automaten bedrijfs_id 自动th_nummer

so I want to get even the records without any automaat field . 所以我想获得没有任何automaat字段的记录。 (which has to be filled in then (然后必须填写
Comment: improved formatting, corrected spelling Mysql table join records from 2 tables but get all records even the ones with empty fields I have 2 tables and want to get all records from table 'klanten' and where the 'automaten' records are matching bedrijfs_id. 注释:改进了格式,纠正了拼写错误Mysql表从2个表中加入了记录,但获得了所有记录,即使是那些包含空字段的记录,我也有2个表,并且希望从表'klanten'中获得所有记录,并且'automaten'记录与bedrijfs_id匹配。

Still no working solution :( 仍然没有有效的解决方案:(

I think you meant to do a LEFT JOIN instead like 我想你想做一个LEFT JOIN而不是

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

This should be your solution: 这应该是您的解决方案:

$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 
 ";

Regards V 关于V

You have to use a left outer join: 您必须使用左外部联接:

http://dev.mysql.com/doc/refman/5.0/en/join.html http://dev.mysql.com/doc/refman/5.0/en/join.html

Your query will look like: 您的查询将如下所示:

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 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM