2

我遇到了一个问题,我认为这与我的 SQL 语句中的 Join 有关。

select s.customer as 'Customer', 
    s.store as 'Store', 
    s.item as 'Item', 
    d.dlvry_dt as 'Delivery', 
    i.item_description as 'Description', 
    mj.major_class_description as 'Major Description', 
    s.last_physical_inventory_dt as 'Last Physical Date', 
    s.qty_physical as 'Physical Qty', 
    s.avg_unit_cost as 'Unit Cost', 
    [qty_physical]*[avg_unit_cost] as Value 
from argus.DELIVERY d 
join argus.STORE_INVENTORY s 
    ON (s.store = d.store)
join argus.ITEM_MASTER i 
    ON (s.item = i.item)
join argus.MINOR_ITEM_CLASS mi 
    ON (i.minor_item_class = mi.minor_item_class)
join argus.MAJOR_ITEM_CLASS mj 
    ON (mi.major_item_class = mj.major_item_class)
where s.last_physical_inventory_dt between '6/29/2011' and '7/2/2012' 
    and s.customer = '20001' 
    and s.last_physical_inventory_dt IS NOT NULL

它带有看似无限数量的一张唱片的副本。我加入这些表格的方式有问题吗?

4

1 回答 1

1
join argus.MINOR_ITEM_CLASS mi 
    ON (i.minor_item_class = mi.minor_item_class)
join argus.MAJOR_ITEM_CLASS mj 
    ON (mi.major_item_class = mj.major_item_class)

我的猜测是您的错误存在于这两个连接之一中。当您仅使用 JOIN 一词时,它假定您正在尝试执行 INNER JOIN,它返回至少具有 1 比 1 的所有记录。我不知道您的数据是什么样的,但我假设有很多要次要项目类和主要项目类之间存在许多关系,因此当您运行此查询时,您会收到几乎每个字段的重复记录,但主要项目类不同。

我会看看结果。大多数列将具有不变的重复数据,而其中一列的每一行将具有不同的值。这应该告诉您,每行具有不同数据的列是您应该以不同方式连接的列。

否则,我会说您的查询格式正确。

于 2012-06-04T16:47:21.877 回答