【问题标题】:How To Code a Multi-Join SQL Query And Get Query Results Even When 1 Table Lacks A Joining Row即使 1 个表缺少连接行,如何编写多连接 SQL 查询并获取查询结果
【发布时间】:2013-01-18 01:41:09
【问题描述】:

我有如下查询语句:

$query_string = '
    SELECT customerID, lastName, firstName, companyName, email, citizenship, primaryLanguage
    FROM customers
    JOIN citizenships USING(citizenshipID)
    JOIN languages USING(languageID)
    JOIN paymentMethods USING(customerID)
    WHERE customerID = "1"
';

目前,客户、公民和语言表中的每一个都包含行并正确连接。我的查询结果为客户 #1 返回 1 行。

paymentMethods 表此时不包含任何行。当我将 paymentMethods 的连接语法添加到查询字符串时,我的查询结果为客户 #1 返回 0 行。

我想加入 paymentMethods 并仅在 paymentMethods 表存在时返回一行,否则不会返回任何客户行。

我应该如何调整我的 JOIN 语法来实现这一点?

谢谢。

【问题讨论】:

    标签: sql join


    【解决方案1】:

    将其替换为LEFT JOIN:

    SELECT  customerID, lastName, firstName, companyName, email, citizenship, primaryLanguage
    FROM    customers
    JOIN    citizenships
    USING   (citizenshipID)
    JOIN    languages
    USING   (languageID)
    LEFT JOIN
            paymentMethods
    USING   (customerID)
    WHERE   customerID = "1"
    

    【讨论】:

      【解决方案2】:
      $query_string = '
         SELECT customerID, lastName, firstName, companyName, email, citizenship,   primaryLanguage
         FROM customers
         JOIN citizenships USING(citizenshipID)
         JOIN languages USING(primaryLanguageID)
         LEFT JOIN paymentMethids USING(customerID)
         WHERE customerID = "1"
      ';
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多