Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 为下表编写SELECT查询时出现问题_Sql_Ms Access - Fatal编程技术网

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个名称的供应商名称或者更多的货物。