2

と同じ都市に住んでいる顧客を表示しようとしていますWilliam。私のcustomerテーブルには、列として郵便番号がありzipCodeます。私のcityテーブルには、都市名がありcityNameます。

テーブル都市:

zipCode (PK) cityName, stateCode   

テーブル顧客:

customerId (PK) customerName, customerAddress, zipCode (FK)

これまでの私のクエリ...

SELECT 
    cu2.customerName AS 'Customer Name', 
    ci2.cityName AS 'City Name'
FROM 
    customer as cu
INNER JOIN 
    city as ci ON cu.zipCode = ci.zipCode
INNER JOIN 
    city as ci2 ON ci.cityName = ci2.cityName
INNER JOIN 
    customer as cu2 ON ci2.zipCode = cu2.zipCode
                    AND cu2.customerName <> cu.customerName
WHERE 
    cu2.customerName = 'William'

ウィリアムの郵便番号がチェックされているのは、彼がいる都市に他に 2 つの郵便番号がある場合のみだと思うため、結果は表示されません。彼は 91709 で、cityNAME にはさらに 91708 と 91710 があります。その cityNAME 内の他の顧客を取得する必要があります。

4

2 に答える 2

0
SELECT ct.customerName
FROM city c JOIN customer ct ON c.ZipCode = ct.ZipCode
WHERE c.CityName IN (
                     SELECT c.CityName
                     FROM customer ct JOIN city c ON ct.ZipCode = c.ZipCode 
                     WHERE ct.CustomerName = 'William'
                     )
于 2012-11-25T10:55:26.360 に答える
0

私はあなたのスキーマを次のように考えます:

顧客 (顧客 ID、顧客名、都市 ID、...)

都市 (都市 ID、都市名、郵便番号、...)

「ウィリアム」と同じ都市に住んでいる顧客を取得するには、次のものが必要です。

SELECT cust.customerName, cit.city_name
FROM customer cust
JOIN city cit ON cust.cityid = cit.cityid
WHERE cit.cityid IN (
     SELECT cit2.cityid
     FROM city cit2
     JOIN customer cust2 ON cit2.cityid = cust2.cityid
     WHERE cust2.customerName = 'William'
)
于 2012-11-25T04:49:30.517 に答える