電子書籍の厳選無料作品が豊富!

いつもお世話になっております。

例えば以下のようなテーブルがあります。


顧客名  紹介者 [フィールド名]
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回誰かを紹介している。

何度やってもできません。
どなたかご教授ください。

A 回答 (5件)

SELECT 紹介者 AS 顧客名,COUNT(*) AS 紹介者カウント


FROM テーブル名
GROUP BY 紹介者

というのでどうでしょうか。
    • good
    • 0
この回答へのお礼

PrintScreeさん。
さっそくのお返事ありがとうございました!!

PrintScreeの方法だと、顧客名が、紹介されている人しか結果として表示されないようです・・。

顧客者は全員表示で、紹介されていない場合は"0"と表示されて欲しいのですが、中々思うようにいきません。

しかし、助言誠にありがとうございました!
もう少しかんがえてみます!

お礼日時:2006/05/17 09:55

皆さん、外部結合を使って書かれているので、それ以外の方法で書いてみます。



select a.顧客名,count(*) as 紹介者カウント
from テーブル as a,テーブル as b
where a.顧客名=b.紹介者
group by a.顧客名

試してないけど、動くと思います。
原始的な構文なので、古いデータベースでも動くと思いますよ。
    • good
    • 0
この回答へのお礼

k_o_r_o_c_h_a_nさん、お返事ありがとう御座います。

なるほどこういう方法もあるのですね!?

早速試してみます!

本当にありがとうございました!

お礼日時:2006/05/17 10:05

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.紹介者;

これで出来ます。
    • good
    • 0
この回答へのお礼

O_cyanさん。

お返事ありがとうございました!

大変申し訳御座いません!

Access2000を使用しております!

SQLありがとうございます。

さっそくやってみます。

お礼日時:2006/05/17 10:04

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.紹介者
    • good
    • 0
この回答へのお礼

chukenkenkouさんお返事ありがとうございました!

申し訳御座いませんでした。
確かにおっっしゃるとおりです。

これではデータベースの種類もわからないですよね!?

本当にすいませんでした。

Access2000を使用しております。

一度このSQL文でやってみます。

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

お礼日時:2006/05/17 10:02

自己結合で解決できると思います。



select hoge.顧客名,count(sage.紹介者) from TABLE_NAME hoge left join TABLE_NAME sage on hoge.顧客名=sage.紹介者 group by hoge.顧客名

このような感じです。
    • good
    • 0
この回答へのお礼

naochancomさん。

お返事ありがとうございました!

なるほど、自己結合・・ですか。

一度実際にやってみます。
ありがとうございました!

お礼日時:2006/05/17 09:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す