日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2025/3/21 数据库 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java找出价格最低_SQL查询查找每个零件的最低价格的供应商 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我需要找到每個零件價格最低的供應商。

表:供應商(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)做了一些假設,您可能需要更改??梢灾赋?#xff0c;“cost=min_cost”是連接的一部分,因此它也可以到達那里。我也沒有包含表別名,因為雖然這是最佳實踐,但不是必需的。

總結

以上是生活随笔為你收集整理的java找出价格最低_SQL查询查找每个零件的最低价格的供应商的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。