在MS ACCESS中使用外部联接嵌套内部联接

时间:2016-07-21 16:27:32

标签: sql ms-access left-join inner-join

我已经回顾了之前有关此主题的一些问题,似乎无法回答我的问题。

我有3张桌子(Lot,Menu,SKU)。

我需要菜单中的所有成分及其在SKU中的相关产品名称,即使在LOT中没有关联的行,也需要SKU中的相关产品名称

我当前的查询:

    select m.IngrSKU, m.IngMeasurementID, s.productName, m.quantity as   mQuantity, l.quantity, l.lot 
    from (Menu m 
    inner join sku s on m.ingrsku = s.sku)
    left outer join lot l on m.ingrsku + '-070516j' = l.lot and l.destinationid = 2 
    where m.skutype = 4 and m.SKU = '1321'

我读到外连接必须在内部之后,但我仍然得到“不支持连接表达式”错误。

有什么想法吗?

更新:此查询在SQL Server中提供所需的结果集;只是无法让它在Access

中运行

3 个答案:

答案 0 :(得分:2)

原来问题在于左连接中的多个条件。

我添加了parens并解决了它。

    select m.IngrSKU, m.IngMeasurementID, s.productName, m.quantity as   mQuantity, l.quantity, l.lot 
    from (Menu m 
    inner join sku s on m.ingrsku = s.sku)
    left outer join lot l on (m.ingrsku + '-070516j' = l.lot and l.destinationid = 2) 
    where m.skutype = 4 and m.SKU = '1321'

答案 1 :(得分:0)

你没有括号试试吗?

select m.IngrSKU, m.IngMeasurementID, s.productName, m.quantity as , mQuantity, l.quantity, l.lot 
from Menu m 
join sku s on m.ingrsku = s.sku
left join lot l on m.ingrsku + '-070516j' = l.lot and l.destinationid = 2 
where m.skutype = 4 and m.SKU = '1321'

答案 2 :(得分:-1)

    select y.IngrSKU, y.IngMeasurementID, y.productName, 
y.quantity as   mQuantity, y.quantity, y.lot  
    from  ((select *
        from Menu m 
        inner join sku s on m.ingrsku = s.sku ) x
        left outer join lot l on x.ingrsku + '-070516j' = l.lot 

and l.destinationid = 2 ) y
        where y.skutype = 4 and y.SKU = '1321'