我有以下表格:
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)
isCOUNT
自动假设DISTINCT
是 order byF1_ID
而不是 byF1_ORDR
如果有人可以帮助我如何告诉COUNT(DISTINCT)
订购,F1_ORDR
那将是最有帮助的。我在广阔的互联网上搜索了一个解决方案,但很难向搜索引擎、论坛等解释我想要什么。我的数据库使用 Microsoft SQL Server。我的数据库管理知识几乎完全是自学的,所以我很高兴自己能做到这一点。我的专长是网页设计。感谢您的时间。