アプリ版:「スタンプのみでお礼する」機能のリリースについて

MySQL5で、table1に、会社名が以下のように記録されているところ、SQL文で「重複を間引いた会社数」を数えたいです。以下なら3種類ですので、3を取得したいです。
A社
B社
A社
C社
C社

そこで、以下の【】を加筆してみたところ、最初のレコード1件しか返ってきません。

select *【, count(distinct table1.company_name) as company_number】 from table1, table2 where table1.mykey = table2.mykey and okflag = '1' and deleteflag != '1' order by table1.company_name desc

【】を除いた以下に戻すと、きちんと全てのレコードが返ってくるのですが。。。

select * from table1, table2 where table1.mykey = table2.mykey and okflag = '1' and deleteflag != '1' order by table1.company_name desc

A 回答 (2件)

最初に『経験なしのド素人の戯言』として読み飛ばして頂いても。



>【】を除いた

データ群の仮想テーブルからカウントすると感じますので、

select * , count(distinct table_A.company_name) as company_number】 from (select * from table1, table2 where table1.mykey = table2.mykey and okflag = '1' and deleteflag != '1' order by table1.company_name desc) table_A

のように集めたデータ群を別のテーブルとしておき、そのテーブル内の該当するフィールドの値で重複を削除する・・・・
のではないかなと感じますが、先に申し上げたようにド素人ですので間違ってたら読み飛ばしてください。
    • good
    • 0
この回答へのお礼

ありがとうございます、ここの部分の作業にもどってこれず、お礼が遅くなりました、仮想テーブル、でしたっけ?早速組み込んでみます。

お礼日時:2021/11/09 23:29

group byのキーとして利用するか、distinctするかのどちらかですね


あとは全体としてどういう結果がほしいかわからないのでなんともいえません

A社,2
B社,1
A社,2
C社,2
C社,2

がほしいのでしょうか?

A社,2
B社,1
C社,2

なのでしょうか?
    • good
    • 0
この回答へのお礼

ここの部分の作業になかなかもどってこれず、お礼が遅くなりすみません、また質問も不完全で失礼しました、補足もできないままシステムが締め切られてしまいました。恐縮でした。

お礼日時:2021/11/09 23:30

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

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