0

我的程序中有这两张表来管理库存:

文章(项目):

id_articulo (id_item), nombre (名字), tipo (种类)

Salidas(装运):

id_articulo (id_item), cant_sale (出货量), imp_total (总成本), almacen_destino (shipemt 库存命运), 日期

我被要求做一个静态的产品列表,这样他们总是会以相同的顺序显示相同的项目,其中项目类型 (tipo) =something

当我想在日期之间搜索特定的装运库存设计(almacen_destino)时,我无法获得所有具有相同类型(tipo)的物品,因为它们没有发货

这是我到目前为止的查询:

select a.id_articulo, sum(s.cant_sale) as Cant_sale, sum(s.imp_total) as Imp_total
from articulos a left join salidas s
on a.id_articulo=s.id_articulo
WHERE a.tipo='EMPAQUES'
and FECHA BETWEEN '06/06/2012' AND '12/06/2012'
and s.almacen_destino like 'CERRO COLORADO'
group by a.id_articulo

它仅显示运送到该库存命运的物品,其中tipo(种类)=这些日期之间的Empaques,不喜欢显示相同的信息以及所有其他具有相同种类(tipo)的物品,即使装运量和总额也不发货成本为空。

提前,谢谢。

4

2 回答 2

3

将过滤条件放在外部表上会将您的外部联接转换为内部联接。你试过了吗:

SELECT 
  a.id_articulo, 
  SUM(s.cant_sale) AS Cant_sale, 
  SUM(s.imp_total) AS Imp_total
FROM
  dbo.articulos AS a 
LEFT OUTER JOIN
  dbo.salidas AS s
  ON a.id_articulo = s.id_articulo
  AND s.almacen_destino = 'CERRO COLORADO'
  AND s.FECHA BETWEEN '20120606' AND '20120612'
WHERE a.tipo = 'EMPAQUES'
GROUP BY a.id_articulo;

我在这里猜测了几件事:

  • FECHAsalidas- 如果不是,则将该 AND 移至 WHERE 子句。
  • 你的日期是 d/m/y。请始终使用明确的日期格式 - 您可能在英国或加拿大,但并非您的听众中的每个人都是,我们无法读懂您的想法。
于 2012-06-25T17:25:21.763 回答
1

您必须在WHERE子句中包含与LEFT JOINed 表相关的任何子句块ON

于 2012-06-25T17:13:39.873 回答