Sql 为下表编写SELECT查询时出现问题
可能重复:Sql 为下表编写SELECT查询时出现问题,sql,ms-access,Sql,Ms Access,可能重复: 我试图列出供应商的名称(sname)和至少有两个不同零件的供应商的零件号(pnum) 这是我需要处理的两张桌子 装运表: 供应商表: 我尝试的是: 这是不正确的,我尝试了一些类似的方法 SELECT snum FROM (SELECT snum, count(snum) AS nbr FROM Shipments ) WHERE nbr > 1; 谢谢在使用聚合函数(如COUNT)时,需要使用GROUP BY子句。使用聚合和分组时,HAVING子句充当where子句
我试图列出供应商的名称(sname)和至少有两个不同零件的供应商的零件号(pnum) 这是我需要处理的两张桌子 装运表: 供应商表: 我尝试的是: 这是不正确的,我尝试了一些类似的方法
SELECT snum
FROM (SELECT snum, count(snum) AS nbr FROM Shipments )
WHERE nbr > 1;
谢谢在使用聚合函数(如COUNT)时,需要使用GROUP BY子句。使用聚合和分组时,HAVING子句充当where子句
SELECT suppliers.sname, shipments.pnum
FROM suppliers, shipments
WHERE shipments.snum = suppliers.snum
GROUP BY suppliers.sname
HAVING count(shipments.pnum) >= 2
这将获得所有计数大于1的snum
SELECT snum
FROM
(
SELECT snum, count(snum) AS nbr
FROM Shipiments
GROUP BY snum
HAVING COUNT(snum) > 1
) AS T
这将把表连接回suppliers表以获取供应商名称
SELECT DISTINCT Suppliers.sname
FROM
(
SELECT snum, count(snum) AS nbr
FROM Shipiments
GROUP BY snum
HAVING COUNT(snum) > 1
) AS T INNER JOIN Suppliers ON Suppliers.snum = T.snum
我不知道如何访问(因为这个问题被标记为这样),但这应该在MySQL中起作用:
select su.sname from suppliers su
join shipments sh on su.snum = sh.snum
group by su.sname
having count(distinct su.pnum) >= 2
为什么这个问题被标记为
mysql
和access
?b/c我正在使用access实现这个sql查询。首先,请不要将标记信息放在主题行中;这就是标签设计的目的。(事实上,您使用了SELECT
并标记了MySQL
和SQL
使得SQL
在主题中显得多余,而额外的措辞掩盖了问题。)第二,您需要编辑以在此处提供表信息;重要信息的离线链接意味着,如果这些外部站点离线或消失,您的问题将变得毫无意义。它还使您的问题不可供未来用户搜索。谢谢。:)非常感谢。我很感激你的回答,因为某些原因,这不起作用。不过,这对我来说是完全有意义的。当我尝试运行此查询时,access中出现一个错误,表示“sname”未作为聚合函数的一部分包含。@CSoverIT-Hmm您是否遇到语法错误?@CSoverIT我使用了=
而不是
,可能是原因,请检查:)不,我尝试了该修复,但无效:(@CSoverIT想详细说明你说的不工作是什么意思吗?返回错误的结果,或者?没有列出名称,只有数字…我正在试图找出如何将供应商名称链接到列出的项目,谢谢。请尝试添加的底部查询。假设联接正确,它将为你提供所有具有2个名称的供应商名称或者更多的货物。