Php Mysql查询-显示在少数表中找到匹配的行,并显示空行
我目前正在处理一个表,此表包含例如customer number,此customer number可在另外两个表中找到,我想获取有关此号码的详细信息(姓名、电话号码)。Php Mysql查询-显示在少数表中找到匹配的行,并显示空行,php,mysql,Php,Mysql,我目前正在处理一个表,此表包含例如customer number,此customer number可在另外两个表中找到,我想获取有关此号码的详细信息(姓名、电话号码)。 因此,我的查询只显示在某个代码号的查询中有匹配项的客户,这是因为我使用的是内部联接。 我想显示其他表中不匹配的行。它们在我从中选择的表中,但没有代码。(就像我要显示的空行) 下一个查询将更容易理解 $sql="SELECT $tbl_name.*,customers.fname,eventcodes.DISCODE,eventc
因此,我的查询只显示在某个代码号的查询中有匹配项的客户,这是因为我使用的是内部联接。
我想显示其他表中不匹配的行。它们在我从中选择的表中,但没有代码。(就像我要显示的空行)
下一个查询将更容易理解
$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,因为它会给我那些没有代码的。就这些,拉蒂亚-你什么意思?你能用解释这个问题的三个表格中的一些样本数据编辑你的问题吗?这会有帮助的。