【问题标题】:MySQL JOIN, via PHP, when there is no data in one of the tables?MySQL JOIN,通过 PHP,当其中一张表中没有数据时?
【发布时间】:2010-03-29 18:52:48
【问题描述】:

如果您要连接的表之一没有用户的任何数据,您如何处理连接语句。

例如:

-user_1 列在所有表中。

-user_2 在 table_1、table_2 和 table_3 中列出,但不在 table_4 中。

以下查询失败,因为 user_2 不在 table_4 中。

$query = "SELECT table_1.username, table_2.car, table_3.bike, table_4.plane
    FROM table_1
    JOIN table_2
        ON table_1.username=table_2.username
    JOIN table_3
        ON table_1.username=table_3.username
    JOIN table_4
        ON table_1.username=table_4.username
    WHERE table_1.username = 'user_2'";

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    在这种情况下,您通常会查看LEFT JOIN

    类似

    SELECT table_1.username, table_2.car, table_3.bike, table_4.plane 
        FROM table_1 
        JOIN table_2 
            ON table_1.username=table_2.username 
        JOIN table_3 
            ON table_1.username=table_3.username 
        LEFT JOIN table_4 
            ON table_1.username=table_4.username 
        WHERE table_1.username = 'user_2'
    

    这也可能是在任何其他表格中的情况,所以即使这样也可能更有帮助

    SELECT table_1.username, table_2.car, table_3.bike, table_4.plane 
        FROM table_1 
        LEFT JOIN table_2 
            ON table_1.username=table_2.username 
        LEFT JOIN table_3 
            ON table_1.username=table_3.username 
        LEFT JOIN table_4 
            ON table_1.username=table_4.username 
        WHERE table_1.username = 'user_2'
    

    【讨论】:

      【解决方案2】:

      查看 OUTER JOIN。它允许在一侧记录,但在另一侧(左外/右外)是可选的。如果在“其他”表上没有找到记录,则其列将导致结果集中为 NULL,所以要小心

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-10-29
        • 2016-11-01
        • 2020-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多