0

次のクエリステートメントがあります。

$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構文をどのように微調整できますか?

ありがとうございました。

4

2 に答える 2

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"
于 2013-01-17T17:41:04.867 に答える
1
$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"
';
于 2013-01-17T17:41:09.120 に答える