私は次のテーブルを持っています:
filetype1
F1_ID | F1_ORDR | FILENAME
1 | 1 | file1.txt
2 | 2 | file2.txt
3 | 3 | file3.txt
4 | 2 | file4.txt
5 | 4 | file5.txt
filetype2
F2_ID | F2_ORDR | FILENAME
1 | 1 | file6.txt
2 | 2 | file7.txt
3 | 4 | file8.txt
ordr
OR_ID | OR_VENDOR
1 | 1
2 | 1
3 | 1
4 | 1
vendor
VE_ID | VE_NAME
1 | Company1
私の目標は、ベンダーのリストと、タイプごとにファイルが接続されている注文数のカウントを取得することです。たとえば、このデータの最終結果は次のようになります。
VENDOR | OR_CT | F1_CT | F2_CT
Company1 | 4 | 4 | 3
少なくとも1つのtype1ファイルが4つの異なる注文に添付され、少なくとも1つのtype2ファイルが3つの異なる注文に添付されたためです。現在、私のSQLコードは次のようになっています。
SELECT vendor.ve_id, vendor.ve_name,
(SELECT COUNT(or_id)
FROM ordr
WHERE ordr.or_vendor = vendor.ve_id) as OR_COUNT,
(SELECT COUNT(DISTINCT f1_order)
FROM filetype1 INNER JOIN ordr ON filetype1.f1_ordr = ordr.or_id
WHERE ordr.or_vendor = vendor.ve_id) as F1_CT,
(SELECT COUNT(DISTINCT f2_ordr)
FROM filetype2 INNER JOIN ordr ON filetype2.f2_ordr = ordr.or_id
WHERE ordr.or_vendor = vendor.ve_id) as F2_CT
FROM vendor
ORDER BY vendor.ve_name
残念ながら、これにより次の結果が得られます。
VENDOR | OR_COUNT | F1_COUNT | F2_COUNT
Company1 | 4 | 5 | 3
私の唯一の推測は、私が使用しているのでCOUNT(DISTINCT)
、がではなくによって順序付けられCOUNT
ていると自動的に想定しているということですDISTINCT
F1_ID
F1_ORDR
誰かがCOUNT(DISTINCT)
注文するように指示する方法について私を助けることができれば、F1_ORDR
それは最も役に立ちます。広大なインターネットで解決策を探しましたが、検索エンジンやフォーラムなどに何をしたいかを説明するのは難しいです。私のデータベースはMicrosoftSQLServerを使用しています。私のデータベース管理の知識はほぼ完全に独学で学んでいるので、これまで自分で学んだことをうれしく思います。私の専門はウェブデザインです。お時間をいただきありがとうございます。