• ベストアンサー

SQL文をどなたか教えてください。

いつもお世話になっております。 例えば以下のようなテーブルがあります。 顧客名  紹介者 [フィールド名] Aさん   null Bさん   Aさん Cさん   Bさん Dさん   Cさん Eさん   Aさん Fさん   Cさん この中から以下のような結果が出るクエリ↓ 顧客名 紹介者カウント [フィールド名] Aさん   2 Bさん   1 Cさん   2 Eさん   0 Fさん   0 を作成するには、どのようなSQL文を組み立てたら よいのでしょうか? [顧客名でDISTINCT、紹介したカウントを求める。 カウントは"AS 紹介者カウント" で格納] 例えば、Aさんは2回誰かを紹介している。 何度やってもできません。 どなたかご教授ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • PrintScree
  • ベストアンサー率25% (538/2091)
回答No.1

SELECT 紹介者 AS 顧客名,COUNT(*) AS 紹介者カウント FROM テーブル名 GROUP BY 紹介者 というのでどうでしょうか。

kyo----
質問者

お礼

PrintScreeさん。 さっそくのお返事ありがとうございました!! PrintScreeの方法だと、顧客名が、紹介されている人しか結果として表示されないようです・・。 顧客者は全員表示で、紹介されていない場合は"0"と表示されて欲しいのですが、中々思うようにいきません。 しかし、助言誠にありがとうございました! もう少しかんがえてみます!

その他の回答 (4)

回答No.5

皆さん、外部結合を使って書かれているので、それ以外の方法で書いてみます。 select a.顧客名,count(*) as 紹介者カウント from テーブル as a,テーブル as b where a.顧客名=b.紹介者 group by a.顧客名 試してないけど、動くと思います。 原始的な構文なので、古いデータベースでも動くと思いますよ。

kyo----
質問者

お礼

k_o_r_o_c_h_a_nさん、お返事ありがとう御座います。 なるほどこういう方法もあるのですね!? 早速試してみます! 本当にありがとうございました!

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.4

DBが不明ですが テーブルをTblとした場合 SELECT Tbl_1.顧客名, Count(Tbl.紹介者) AS 紹介者のカウント FROM Tbl AS Tbl_1 LEFT JOIN Tbl ON Tbl_1.顧客名 = Tbl.紹介者 GROUP BY Tbl_1.顧客名, Tbl.紹介者; これで出来ます。

kyo----
質問者

お礼

O_cyanさん。 お返事ありがとうございました! 大変申し訳御座いません! Access2000を使用しております! SQLありがとうございます。 さっそくやってみます。

回答No.3

RDBMSは何ですか? バージョンは? ここは「MS-ACCESS」というカテゴリではないので、 そういった情報も書いてください。 期待する結果で、「Dさん  0」が抜けていますが、 単なる記述漏れですか? 以下のようなSQLに、してみてください。 「IFNULL(Y.CNT,0)」で、件数がない(null)の場合に 0と返すようにしています。 お使いのRDBMSで、「nullの場合、別の値を返す」と いう関数があると思うので、書き換えてください。 SELECT X.顧客名,IFNULL(Y.CNT,0) AS 紹介者カウント FROM テーブル名 AS X LEFT JOIN (select 紹介者,count(*) AS CNT from テーブル名 group by 紹介者) AS Y ON X.顧客名=Y.紹介者

kyo----
質問者

お礼

chukenkenkouさんお返事ありがとうございました! 申し訳御座いませんでした。 確かにおっっしゃるとおりです。 これではデータベースの種類もわからないですよね!? 本当にすいませんでした。 Access2000を使用しております。 一度このSQL文でやってみます。 ありがとうございました!

回答No.2

自己結合で解決できると思います。 select hoge.顧客名,count(sage.紹介者) from TABLE_NAME hoge left join TABLE_NAME sage on hoge.顧客名=sage.紹介者 group by hoge.顧客名 このような感じです。

kyo----
質問者

お礼

naochancomさん。 お返事ありがとうございました! なるほど、自己結合・・ですか。 一度実際にやってみます。 ありがとうございました!

関連するQ&A