【问题标题】:PHP SQL: Matching corresponding Data between 2 tables, without Filtering out Data in 1st TablePHP SQL:匹配2个表之间的对应数据,而不过滤掉第一个表中的数据
【发布时间】:2010-05-21 00:42:18
【问题描述】:

我有 2 张桌子。为简单起见,“u”具有以下列
用户名
分工号

'd' 具有以下内容:
分工号
姓名

我没有创建这个表,否则我不会有这个问题。 u.DIVISION 可以为 NULL。 d.DIVISION 不能

运行以下命令会创建适当的数据,但它也会过滤掉每个用户 ID,其 partitionid 为 NULL。无论如何,是否仍然显示所有用户 ID,而不管他们的部门 ID 是什么,如果部门 ID 不为空,则显示部门的名称?

“选择用户名,d.NAME
来自你,d
WHERE u.divisionid = d.divisionid
按用户 ID 排序"

【问题讨论】:

    标签: php mysql multi-table


    【解决方案1】:

    使用外连接:

    SELECT userid, d.NAME
    FROM u
    LEFT OUTER JOIN division d
    ON u.divisionid = d.divisionid
    ORDER BY userid
    

    【讨论】:

      【解决方案2】:

      使用 Oracle 或隐含的连接语法意味着 INNER JOIN。内连接会消除不符合条件的记录。

      使用JOIN 子句的显式连接允许您指定连接类型。

      LEFT OUTER JOIN 保留第一个表中的所有行,无论第二个表中是否有匹配的行。

      SELECT userid, d.NAME
      FROM u
      LEFT OUTER JOIN division d
      ON d.divisionid = u.divisionid
      ORDER BY userid
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多