Php Mysql查询-显示在少数表中找到匹配的行,并显示空行

Php Mysql查询-显示在少数表中找到匹配的行,并显示空行,php,mysql,Php,Mysql,我目前正在处理一个表,此表包含例如customer number,此customer number可在另外两个表中找到,我想获取有关此号码的详细信息(姓名、电话号码)。 因此,我的查询只显示在某个代码号的查询中有匹配项的客户,这是因为我使用的是内部联接。 我想显示其他表中不匹配的行。它们在我从中选择的表中,但没有代码。(就像我要显示的空行) 下一个查询将更容易理解 $sql="SELECT $tbl_name.*,customers.fname,eventcodes.DISCODE,eventc

我目前正在处理一个表,此表包含例如customer number,此customer number可在另外两个表中找到,我想获取有关此号码的详细信息(姓名、电话号码)。
因此,我的查询只显示在某个代码号的查询中有匹配项的客户,这是因为我使用的是内部联接。
我想显示其他表中不匹配的行。它们在我从中选择的表中,但没有代码。(就像我要显示的空行)
下一个查询将更容易理解

$sql="SELECT $tbl_name.*,customers.fname,eventcodes.DISCODE,eventcodes.AREA
                FROM $tbl_name
                    INNER JOIN customers
                        INNER JOIN eventcodes
                                ON $tbl_name.Ccode=eventcodes.MokedCcode AND eventcodes.Ccode=customers.Ccode  AND $tbl_name.CODE=eventcodes.CODE
                                                                ORDER By `id` DESC
                                                                        LIMIT $start, $limit";
正如您可以看到我想在$tbl_name上显示的所有行一样,这个查询可以工作,但它只显示符合条件的行,我想显示表中所有没有代码的行,但我可以从customers表中提取它们的名称,例如(fname),因为我有它们的代码(customer number)。
谢谢

试试这个

SELECT $tbl_name.*,customers.fname,eventcodes.DISCODE,eventcodes.AREA
                FROM $tbl_name
                    LEFT JOIN customers
                        LEFT JOIN eventcodes
                                ON $tbl_name.Ccode=eventcodes.MokedCcode AND eventcodes.Ccode=customers.Ccode  AND $tbl_name.CODE=eventcodes.CODE
                                                                ORDER By `id` DESC
                                                                        LIMIT $start, $limit

使用
左连接
代替
内部连接

使用
左连接
并注意连接条件:

SELECT 
  t.*,
  c.fname,
  e.DISCODE,
  e.AREA
FROM $tbl_name       AS t
LEFT JOIN customers  AS c ON t.Ccode = c.Ccode
LEFT JOIN eventcodes AS e ON t.Ccode = e.MokedCcode 
ORDER By `id` DESC
LIMIT $start, $limit";

注意:我将条件
customers.Ccode=$tablename.Ccode
移动到第一个联接,并删除了条件
$tbl\u name.code=eventcodes.code
,因为前两个联接将确保该条件。

尝试使用LEFT或RIGHT-join-insted,因为它会给我那些没有代码的。就这些,拉蒂亚-你什么意思?你能用解释这个问题的三个表格中的一些样本数据编辑你的问题吗?这会有帮助的。