我需要找到每个零件价格最低的供应商。

表:供应商(sid、sname、地址)、零件(pid、pname、颜色)、目录(sid、pid、成本)

这是有效的:SELECT

sname, pid

FROM

(SELECT

*

FROM

suppliers

NATURAL JOIN catalog

NATURAL JOIN (SELECT

pid, MIN(cost) AS min_cost

FROM

catalog

GROUP BY (pid)) AS m

HAVING cost = min_cost) AS n

但是,当我试图将其缩短为以下值时,我得到一个错误,即having子句中存在未知的成本:

SELECT

sname, pid

FROM

suppliers

NATURAL JOIN

catalog

NATURAL JOIN

(SELECT

pid, MIN(cost) AS min_cost

FROM

catalog

GROUP BY (pid)) AS m

HAVING cost = min_cost

为什么找不到成本?表中的成本不是因为我已将子查询加入目录吗?

编辑

根据建议,我将其改为使用INNER JOIN,而不是NATURAL JOIN,但仍然会出现相同的错误。新查询:

SELECT

s.sname, m.pid

FROM

suppliers s

INNER JOIN

catalog c ON s.sid = c.sid

INNER JOIN

(SELECT

pid, MIN(cost) AS min_cost

FROM

catalog

GROUP BY (pid)) AS m ON c.pid = m.pid

HAVING cost = min_cost

编辑2

问题不是JOIN而是HAVING,正如bbrumm的回答所示,实际上应该是WHERE。

最佳答案:

我建议这样一个问题:SELECT

supplier.sname,

catalog.pid

FROM suppliers

INNER JOIN catalog ON suppliers.supplier_id = catalog.supplier_id

INNER JOIN

(SELECT

pid, MIN(cost) AS min_cost

FROM catalog

GROUP BY (pid)) AS m

ON catalog.pid = m.pid

WHERE catalog.cost = m.min_cost;

我对您的列名(如供应商id)做了一些假设,您可能需要更改。可以指出,“cost=min_cost”是连接的一部分,因此它也可以到达那里。我也没有包含表别名,因为虽然这是最佳实践,但不是必需的。

java找出价格最低_SQL查询查找每个零件的最低价格的供应商相关推荐

  1. java 找出重复的数据_java 查找list中重复数据实例详解

    java 查找list中重复数据实例详解 需求: 查找一个list集合中所有重复的数据,重复的数据可能不止一堆,比如:aa, bb, aa, bb, cc , dd, aa这样的数据.如果有重复数据, ...

  2. java 4位数,java 找出4位数的所有吸血鬼数字

    java 找出4位数的所有吸血鬼数字 /** * 找出四位数所有的吸血鬼数字 * 吸血鬼数字:位数为偶数的数字可以由一对数字相乘而得,这对数字包含乘积一半的位数 * 如:1260 = 21*60 */ ...

  3. java怎么找出数组最小值,Java找出数组的最小值元素

    Java找出数组的最小值元素 1 说明 在此程序中,我们需要找出数组中存在的最小元素.这可以通过保持变量min来实现,该变量起初将保留第一个元素的值.通过将min的值与数组的元素进行比较来遍历数组.如 ...

  4. java找出两个字符串中所有共同的子串_【Java笔记】

    Leetcode 1.两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是, ...

  5. java 找出姓“张”的学生,将他们的信息写入第二个文件

    一.需求 编写一个Java源程序,其中包含: 编写一个包含主方法main的公共类(访问权限为public的类),主方法main中完成的任务是: (1)从键盘上输入两个文件的路径名及其文件名. (2)从 ...

  6. 计算机用公式找出第一名,用公式查找Excel工作表中重复数据

    前不久,一位网友求教,要求找出Excel工作表中的重复数据并在单元格中列出.我给出了一个数组公式供参考,但不是太符合要求,因为这个数组公式虽然找出了重复数据,但是如果将数组公式向下复制时超出了出现重复 ...

  7. Java找出字符串中第一个不重复的字符

    indexOf() 方法有以下四种形式: public int indexOf(int ch): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1. public ...

  8. java 找出所有水仙花数,java兑现找出所有的水仙花数

    java实现找出所有的水仙花数. 水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身.(例如:1^3 + 5^3 + 3^3 = 153) 在没有考虑效率的情况下 ...

  9. Java 找出四位数的所有吸血鬼数字 基础代码实例

    /**  * 找出四位数的所有吸血鬼数字  * 吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序.  * 以两个 ...

最新文章

  1. js ZeroClipboard 拷贝文本到剪贴板
  2. 国产操作系统UOS —— 你开始使用了吗?这个新年假期我已安装好了!
  3. 交换机出现电源故障怎么解决?
  4. No projects are found to import
  5. Scala中zip或者zipWithIndex用法
  6. python获取当前脚本所在路径并在此基础上创建新的文件路径
  7. wine手动安装wine-mono和wine-gecko组件
  8. Feedforward Deep Networks(要点)
  9. 亲测好用的万能工具箱:Parallels Toolbox for mac中文版
  10. USBCAN卡解决新能源汽车CAN总线测试问题
  11. 从周易六十四卦看软件架构真好懂!女朋友这下不用担心我的学习了~【程序员编程】
  12. 计算机弹音乐薛之谦的歌曲,薛之谦 万能音符(The Key) 薛之谦歌曲,薛之谦mp3在线试听 - 5nd音乐网...
  13. android 日历开发教程,android 开发教程之日历项目实践(三)
  14. Vivo手机实现录音转文字的方法,图文步骤详解,特别简单
  15. 阿里巴巴java开发手册-泰山版 下载
  16. Vue中slot与slot-scope的理解及使用
  17. OSError: pydot failed to call GraphViz.Please install GraphViz (https://www.graphviz.org/) and ensur
  18. 双系统如何远程切换设置
  19. 你想成为管理人才吗?必须去读《孙子兵法》!
  20. JAVA校验时间的大小,并确定是否为当天

热门文章

  1. 搭建consul 集群
  2. Nginx:安装+测试
  3. 数据中心机房谐波治理
  4. 【收藏】电气设计相关计算公式大全(附举例)
  5. “双碳”目标下新型数据中心的方向
  6. 【Castell】安全联锁提升UPS设备维护管理水平
  7. 你以为ACI=SDN?大错特错!
  8. 云计算数据中心建设热潮的两个图表
  9. VMware发布新版vSphere6.5虚拟化平台,助力企业数字化转型
  10. html的input不可编辑状态,HTML中让表单input不可编辑的方法