【问题标题】:Mysql Query - Display rows that found match in few tables and display empty rowsMysql 查询 - 显示在几个表中找到匹配的行并显示空行
【发布时间】:2013-02-06 08:44:47
【问题描述】:

我目前正在处理一个表,此表包含例如客户编号,此客户编号位于另外两个表中,我想提取有关此编号的详细信息(姓名、电话技术)。
因此,我的查询仅显示在某些 CODE Number 查询中匹配的客户,这是因为我正在使用 INNER Join。
我想在其他表中显示不匹配的行。它们在我从中选择但没有代码的表中。 (就像我要显示的空行)
下一个查询会更容易理解

$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 上看到我想要显示的所有行,此查询有效,但它只向我显示符合条件的行,我想显示表中所有不符合条件的行有代码,但我可以从客户表中提取他们的名字,例如(fname),因为我有他们的代码(客户编号)。
谢谢!

【问题讨论】:

  • 尝试在 INNER 的 sted 中使用 LEFT 或 RIGHT 加入

标签: php mysql


【解决方案1】:

使用LEFT JOIN 并注意加入条件:

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_name.CODE=eventcodes.CODE,因为前两个连接将确保该条件。

【讨论】:

  • 它给了我那些没有代码的人。只有他们。
  • @OfirAttia - 你是什么意思?您能否使用解释此问题的三个表中的一些示例数据来编辑您的问题?这会有所帮助。
【解决方案2】:

试试这个

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

【讨论】:

    【解决方案3】:

    使用LEFT JOIN insted of INNER JOIN

    【讨论】:

      猜你喜欢
      • 2013-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-14
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      相关资源
      最近更新 更多