sql - 连接表中最小值的显示名称
问题描述
我有以下表格:
Projects Comparisons Assets
ProjectID ProjectName CompareID ProjectID AssetID AssetID AssetName
1 A 101 1 201 201 ZZZ
2 B 102 1 202 202 YYY
3 C 103 2 203 203 XXX
104 3 204 204 WWW
105 1 205 205 VVV
106 2 206 206 UUU
107 1 207 207 TTT
(Comparisons 和 Assets 实际上有额外的信息需要它们是单独的表,即使这个例子看起来我可以把它全部做成一个表。)
我有一个表单,其记录源是项目(意味着 3 个条目),我想包含一个字段,该字段提供与 ProjectID 的最低比较 ID 相对应的资产名称。像这样的东西:
ProjectName: A (Lowest CompareID is 101) AssetName: ZZZ
ProjectName: B (Lowest CompareID is 103) AssetName: XXX
ProjectName: C (Lowest CompareID is 104) AssetName: WWW
在我的表单上,我已经将控制源列为 Projects.ProjectID 并将行源列为
SELECT Projects.ProjectID, Min(Comparisons.CompareID)
FROM Comparisons INNER JOIN Projects ON Comparisons.ProjectID = Projects.ProjectID
GROUP BY Projects.ProjectID;
我不知道如何合并资产。如果我将 Assets.AssetName 添加到 SELECT 行,那么我需要将此字段包含在命令的其他位置。如果它是 GROUP BY 的一部分,那么我最终每个项目都会有多个我不想要的条目。所以现在是一堆没有成功的试验和错误。请帮助,聪明的人!
解决方案
您可以尝试编写一个子查询 get Min(CompareID)
and MIN(AssetID)
from Comparisons
table then JOIN
。
SELECT Projects.ProjectName,
CompareIDMin,
Assets.AssetName
FROM (
select ProjectID,Min(CompareID) AS CompareIDMin,MIN(AssetID) AS AssetIDMin
FROM Comparisons
GROUP BY ProjectID
) as c
INNER JOIN Projects ON c.ProjectID = Projects.ProjectID
INNER JOIN Assets ON Assets.AssetID = c.AssetIDMin
这是一个 sql-server 示例,但我认为它可以在访问中工作,
推荐阅读
- spring-boot - 我可以在云环境以外的数据中心中以集群模式使用 eureka 服务器吗
- java - 测试 Java 方法
- python - 旋转数据名时如何修复错误?
- audio - ffmpeg:每块刷新输出文件
- javascript - 如何使用 C3.js 在 X 轴上旋转固定其右侧的字符串
- clang - Clang CodeGen Builder CreatCall 到 GCC 内置函数
- html - 可滚动 div 内的内容,导致 IE 中出现页面滚动条
- facebook - 无需用户登录即可发布到自己的企业 Facebook 页面
- javascript - 如何在 Node.js 中包含 .js 文件(用于游戏)
- tensorflow - 在 Keras 中的可变长度序列上的 Softmax