2017-03-09 89 views
0

我有2个表(SQL)EntityAttachment EA和UnitInventory UI。 UI.StockNumber可以具有存储在EntityAttachment表中的附件(文档)。返回值不存在于表中或不等于值

我想弄清楚哪一个独特的UI.StockNumber在EA表中根本没有条目(意思是没有文档),并将该列表与具有条目但不具有EA.Extension = 'JPG'。所以真的,我正在寻找没有扩展名='jpg'的UI.StockNumber。

UI.UnitInventoryID = EA.EntityID

可以很容易地加入两个表,并筛选出EA.Extensions =“JPG”,但后来我错过不要在EA在所有存在的那些表。我迷路了,一直在尝试太久。我也能够返回所有的NULL值(在EA表中根本不存在的值),但是后来我忽略了具有pdf,xls等的扩展但不包含jpg的那些值。

这是足够的信息可以帮到你吗?我正在为这个挣扎。

回答

1

您可以使用此查询:

SELECT DISTINCT ui.stocknumber 
FROM unitinventory ui 
WHERE NOT EXISTS (
    SELECT 1 
    FROM entityattachment 
    WHERE entityid = ui.unitinventoryid 
     AND extension = 'jpg' 
    ); 

或者:

SELECT DISTINCT ui.stocknumber 
FROM unitinventory ui 
LEFT JOIN entityattachment ea 
ON ea.entityid = ui.unitinventoryid 
WHERE ea.extension IS NULL 
    OR ea.extension <> 'jpg'; 
+0

选项2将是我的做法。 – dstepan

+0

他们工作,但现在我需要加入另一个表格来过滤出有效的单位和某些类型的单位。我在哪里添加此图层?该表格是UnitMaster UM on [股票编号] = ui。[StockNumber]。 –

+0

@JordonGriffith如果您需要其他请求,IMO您可能需要发布其他问题。请记住添加表格结构,样本数据和预期输出,并说明如何实现该结果。 (在你的评论中,我认为你可能只需要添加一个INNER JOIN,或者可能比这更复杂?)。无论如何,如果我的查询适用于您的第一个问题,您是否可以将该标记标记为供其他人参考的答案。 –