我有一个简单的订购数据库与表订单,Order_Item,项目,供应商和Supplier_Item。一个项目可以有多个供应商,他们都以不同的价格列出该项目。
我试图编写一个查询,查看过去7天的订单及其商品,并返回该订单商品的最便宜供应商价格。
我已经尝试过了:
SELECT O.Order_Id, O.Site_Id, O.Order_Date,
OI.Item_ID, OI.Quantity, OI.Supplier,
I.Item_Name, I.Category,
MIN(SI.Price) AS Price , SI.Supplier_ID,
S.Supplier_Name
FROM [Order_Item] OI
INNER JOIN [Order] O ON O.Order_ID = OI.Order_ID
INNER JOIN Item I ON OI.Item_ID = I.Item_ID
INNER JOIN Supplier_Item SI ON SI.Item_ID = I.Item_ID
INNER JOIN Supplier S ON S.Supplier_ID = SI.Supplier_ID
WHERE O.Order_Date > DATEADD(DAY, - 7, GETDATE())
GROUP BY O.Order_ID, O.Site_ID, O.Order_Date, OI.Item_ID, OI.Quantity,
OI.Supplier, I.Item_Name, I.Category, SI.Supplier_ID,
S.Supplier_Name
但是结果不正确,它应该为每个订单项返回一行(大约100行),但为每个订单项和供应商价格返回一行(3000行)。
如果有人能告诉我哪里出了问题,那将是一个很大的帮助。
无论您有什么其他问题,您的连接看起来都不正确。尤其:
INNER JOIN Supplier_Item SI ON SI.Supplier_ID = I.Item_ID
如果让我猜的话,这应该是:
ON SI.Item_ID = I.Item_ID
尝试确定每个项目的最便宜的供应商价格,然后将其连接到订单项目
SELECT O.Order_Id,
O.Site_Id,
O.Order_Date,
OI.Item_ID,
OI.Quantity,
OI.Supplier,
I.Item_Name,
I.Category,
SI.Price,
SI.Supplier_ID,
SI.Supplier_Name
FROM [Order_Item] OI
INNER JOIN [Order] O
ON O.Order_ID = OI.Order_ID
INNER JOIN Item I
ON OI.Item_ID = I.Item_ID
INNER JOIN (SELECT si_a.item_id,
s.supplier_id,
s.supplier_name,
si_a.price,
ROW_NUMBER() OVER (PARTITION BY si_a.item_id ORDER BY si_a.price) AS cheapest
FROM supplier_item si_a
JOIN supplier s
ON si_a.supplier_id = s.supplier_id
) si
ON si.item_id = i.item_id
AND si.cheapest = 1
WHERE O.Order_Date > DATEADD(DAY, - 7, GETDATE())
我有一个图G,它有一个开始节点S和一个结束节点E。这个图的特殊之处在于,它不是边有代价,而是节点有代价。我想找到S和E之间的方式(一组节点,W),使max(W)最小化。(实际上,我对W不感兴趣,只对max(W)感兴趣)等价地,如果我移除所有代价大于k的节点,那么最小的k是多少,这样S和E仍然是相连的? 我有一个想法,但想知道它是否正确和最佳。下面是我当前的伪代码: 我相信最坏的情况是O(n log
Oracle 的 Java SE 的 JSSE 实现是包含了一个名为 SunJSSE 的供应商,通过 JCA 来预装和预注册。这个供应商提供以下加密服务: SSL 3.0 和 TLS 1.0 安全协议的实现 最常见 SSL 和 TLS 密码套件的实现,其中包括认证、密钥协议、加密和完整性保护 一个基于 x.509 的密钥管理器的实现,用于从标准的 JCA keystore 中选择合适的认证密钥 一
问题内容: 我试图获取数组中的最大值,同时仍保留项目标签。我知道我可以通过运行sort()来做到这一点,但是如果这样做,我只会丢失标签- 这对于我需要的东西毫无意义。这是数组: 有任何想法吗? 问题答案: 不要对数组进行排序以获取最大值。 获得最大值: 获取相应的密钥:
问题内容: 我的数据库结构包含列:。我想检索与最低行的 每一个 。我一直在尝试弄乱and ,仍然-没有解决方案。 问题答案: 解决方案1: 解决方案2: 这个问题非常有名,因此在Mysql的手册中有专门的页面。 请检查以下内容: 行包含某列的分组最大/最小值
问题内容: 我已经找到了尽可能多的文档和StackOverflow文章,但是使用Go 1.6中的新供应商功能无法导入。 这是我与Goji一起测试的示例项目。目录结构如下: 并且,项目中的唯一文件是这样的: 我的环境变量如下: 我尝试了最简单的构建命令,但是没有运气: 我也尝试用: …无济于事。我完全想念什么吗?任何建议表示赞赏。 问题答案: 我建议您阅读https://golang.org/doc