Sql server 选择所有来自同一供应商区域的产品
所以我想显示他们的供应商都来自同一地区的产品的产品代码。你能帮我查询一下吗? 桌子大概是这样的Sql server 选择所有来自同一供应商区域的产品,sql-server,Sql Server,所以我想显示他们的供应商都来自同一地区的产品的产品代码。你能帮我查询一下吗? 桌子大概是这样的 **supplier** ---------------------------------------- supplier_code| region | ---------------------------------------- e1 1 e2 2 e3
**supplier**
----------------------------------------
supplier_code| region |
----------------------------------------
e1 1
e2 2
e3 1
**product**
----------------------------------------
product_code| price |
----------------------------------------
e1 1
e2 2
e3 1
**supply**(relationship)
----------------------------------------
supplier_code| product_code |
----------------------------------------
e1 e1
e2 e2
e3 e1
到目前为止,我得到了这个,但我不知道如何才能让一个产品的所有供应商只来自一个地区
SELECT product.product_code
FROM product,supplier,supply
WHERE product.product_code=supply.product_code
AND supplier.supplier_code=supply.supplier_code
GROUP BY supplier.region
您可以使用此查询。最里面的查询获取每个产品的区域数。然后选择只有一个区域的区域
select X.product_code from
(
select supply.product_code,
dense_rank() over (partition by product_code order by region) rank
from supply
inner join supplier on supply.supplier_code = supplier.supplier_code
) X
GROUP BY X.product_code
HAVING MAX(rank) = 1
我可能遗漏了一些内容,因为您没有明确说明要返回的字段,并且您的查询只给出了
产品\u代码
。如果您想知道他们来自的地区,需要在中选择
如果不需要产品的价格,则只需在供应商
和供应
表之间加入
SELECT Supply.product_code, Supplier.region
FROM Supplier
INNER JOIN Supply
ON Supplier.supplier_code = Supply.supplier_code
GROUP BY Supply.product_code, Supplier.region
给出了结果:
PRODUCT_CODE REGION
e1 1
e2 2
询问代码的问题必须表明对所解决问题的最低理解。包括尝试过的解决方案,以及它们不起作用的原因。谢谢guidancec@freshprinceofsow,group by do做什么?不要使用逗号连接语法。请使用显式连接语法。我认为Group by可能是错误的,但我的主要问题是一个产品的所有供应商都必须来自同一地区。我的教授只教我这种语法,到目前为止还没有完成。考虑提供适当的DDL和/或SqLFIDLE连同期望的结果SETSRY -没有发现这是M$SqLWELL完成,我没有意识到这正是他想要的。我认为他理解这个密码的几率很低。希望他能在谷歌上搜索并找出原因。我会尝试将其调整到我更复杂的模式,但这似乎是非常正确的!非常感谢你!