首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL Server左联接

SQL Server左联接
EN

Stack Overflow用户
提问于 2013-12-03 06:46:03
回答 2查看 41关注 0票数 0

我有两个表: 1.物料,字段: Material have,Material have,Material group 2. ProductionOrder,字段:Material have,qty,orderdate我要取的日期,按物料组分组。因此,我使用以下查询:

代码语言:javascript
运行
复制
SELECT Material.materialgroup, ProductionOrder.qty
FROM ProductionOrder LEFT OUTER JOIN Material
ON ProductionOrder.materialcode=Material.materialcode
WHERE ProductionOrder.orderdate='2013-11-30'
GROUP BY Material.materialgroup
ORDER BY Material.materialgroup

但是结果是不正确的。它接受所有具有materialgroup null的materialcode。注意: ProductionOrder中有一些物料在表物料中没有物料组。结果,有时是正确的,有时是否定的。

谁来帮帮忙。谢谢。

LVD

EN

回答 2

Stack Overflow用户

发布于 2013-12-03 06:50:21

如果您使用LEFT INNER JOIN或仅使用JOIN,它应该可以工作。

票数 0
EN

Stack Overflow用户

发布于 2013-12-03 06:53:35

LEFT JOIN将为您提供来自ProductionOrder的所有行以及来自Material的匹配行

代码语言:javascript
运行
复制
SELECT Material.materialgroup, ProductionOrder.qty
FROM ProductionOrder LEFT OUTER JOIN Material
ON ProductionOrder.materialcode=Material.materialcode
WHERE ProductionOrder.orderdate='2013-11-30'
GROUP BY Material.materialgroup
ORDER BY Material.materialgroup

要只从两个表中获取匹配的行,可以尝试使用INNER JOIN

代码语言:javascript
运行
复制
SELECT Material.materialgroup, ProductionOrder.qty
FROM ProductionOrder INNER JOIN Material
ON ProductionOrder.materialcode=Material.materialcode
WHERE ProductionOrder.orderdate='2013-11-30'
GROUP BY Material.materialgroup
ORDER BY Material.materialgroup

如果你想从Material获得所有行,只想从ProductionOrder获得匹配的行,你可以像这样使用RIGHT JOIN ...

代码语言:javascript
运行
复制
SELECT Material.materialgroup, ProductionOrder.qty
FROM ProductionOrder RIGHT JOIN Material
ON ProductionOrder.materialcode=Material.materialcode
WHERE ProductionOrder.orderdate='2013-11-30'
GROUP BY Material.materialgroup
ORDER BY Material.materialgroup
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20339427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档