2016-12-11 13 views
0

私は、顧客、店舗、購入品、製品などに関する情報を持つデータベースを持っています。各都市には何人の顧客が住んでいるか興味があります。これは、次の表を与えるSQL 2つのテーブルの数

SELECT city, count(cID) FROM customer GROUP BY city 

| City   | # | 
+---------------+---+ 
| Amsterdam  | 4 | 
| New York City | 2 | 
| London  | 1 | 

は、今私は、顧客が住む都市にしか興味ないんだけど、私はでこれを見つけました。私はまた、店があり、顧客がテーブルに住んでいない都市があるようにしたいと思います。このように:

私は、customersテーブル、storeテーブル、またはその両方で発生する各都市に住んでいる顧客をカウントしたいと思います。

テーブルは次のようになります。

顧客CID、CNAME、通り、都市)と のsID、SNAME、通り、都市)誰がどのように知っていますこれを行う?

+1

からたいとuは次の結果を置く場所であることを行うことができますが、「都市」と呼ばれる任意のテーブルを持っていますか?そうでない場合は、どこから市の名前を取得していますか? –

答えて

1
SELECT c.city, 
     COUNT(DISTINCT c.cID) AS [#] 
FROM customer c 
GROUP BY c.city 

UNION 

SELECT s.city, 
     0 AS [#] 
FROM store s 
LEFT JOIN customer c ON s.city = c.city 
WHERE c.cID IS NULL 
0

店舗テーブルと顧客テーブルの間にLEFT JOINを置いて、顧客なしで都市を取得することもできます。

SELECT s.city, count(*) 
FROM store s 
LEFT JOIN customer c ON s.city = c.city 
GROUP BY s.city 

はまた、@AkhterアラミンFarhanとしてあなたがcitiesテーブルを持っていない、コメント?だから、都市名を何度も何度も保管するのではなく、店舗と顧客のテーブルでcityidを一度保管してください。

+0

これは、私が探している結果を作成しません。たとえば、顧客がいないが2店舗ある都市の場合は2となります。 –

+0

count(*)をcount(DISTINCT c.cID)に置き換えました。これはもっと望ましい結果に似ています。顧客が住んでいる都市は存在するが、存在しない場所は除外されている –

0

あなたはUNIONでALL

SELECT someColumn,someColumn,NULL 
FROM someTable 

UNION ALL 

SELECT NULL, NULL, someColumn 
FROM nextTable/orSameTable 

ヌルuは別のクエリ

関連する問題