0
  1. 项目清单

我正在尝试加入两个表,过滤掉具有唯一值的 item_id,并显示包含相同值的任何 item_id。我正在使用的 SQL 语句似乎只工作了一半,除了它返回我认为我知道这个数字的所有内容,但我猜不是。

这句话拉动了一切。

--join two tables filtering out and item_id that has a unique value and displaying any 
--item_id that contains the same value

SELECT inv_bin.bin, inv_bin.quantity, inv_bin.inv_bin_uid, inv_bin.inv_mast_uid,
       inv_mast.inv_mast_uid,inv_mast.item_desc, inv_mast.item_id
FROM   inv_bin left join inv_mast on inv_bin.inv_mast_uid = inv_mast.inv_mast_uid  
WHERE inv_mast.item_id in ( SELECT item_id from inv_mast
                            GROUP BY item_id HAVING COUNT (item_id) >= 1 ) 
      AND inv_bin.bin not like 'rec'
      AND inv_bin.bin not like 'DEFBIN'
      AND inv_bin.bin not like 'DEFAULTBIN'
ORDER BY inv_mast.item_id;

但是,如果我'='从 中删除,Group By item_id Having COUNT (item_id) >= 1 )则查询不会返回任何内容。我知道我在 item_id 列中有相同的数据:

bin        item_id
07C-C15    002-09-121
Z07-OS     002-09-121

无论如何,有人可以告诉我哪里出了问题,在我看来,使用 > 1 会以相同的值显示 item_id 中的所有内容。

谢谢,布雷特

bin         quantity   inv_bin_uid   inv_mast_uid   inv_mast_uid   item_id
07C-C15     0          135           70             70             002-09-121
Z07-OS      10         130277        70             70             002-09-121
04C-B21     0          354           289            289            032-36-26
04C-B04     0          356           291            291            032-38-26
02A-B01     2          101           48             48             5-40050720L  
Z29-SKID00  0          117           48             48             5-40050720L  

这是产生所需结果的完成语句。

/*join two tables filtering out and item_id that has a unique value and displaying any 
item_id that contains the same value */

SELECT inv_bin.bin, inv_bin.quantity, inv_bin.inv_bin_uid, inv_bin.inv_mast_uid,
inv_mast.item_desc, inv_mast.item_id

from inv_bin left join inv_mast on inv_bin.inv_mast_uid = inv_mast.inv_mast_uid  

where inv_bin.inv_mast_uid in ( 
SELECT inv_mast_uid FROM inv_bin  
WHERE inv_bin.bin NOT IN ('REC','DEFBIN','DEFAULTBIN')
GROUP BY inv_mast_uid HAVING COUNT(inv_mast_uid)>1 )

and inv_bin.bin not like 'rec'
and inv_bin.bin not like 'defbin'
and inv_bin.bin not like 'Defaulbin'
/*look up filtering out ids based on not like statements*/

ORDER BY inv_bin.inv_mast_uid;

再次感谢您的所有帮助。

4

1 回答 1

1

这不是答案,只是一个问题/评论:

在不了解有关您的数据库架构的更多详细信息的情况下,我想知道您是否只是在 group-by 子句中使用了错误的表?

如果您的“inv_mast”表仅包含唯一的“item_id”,那么您永远不会从该特定表中获得高于 1 的计数。

尝试使用“inv_bin”表上的 ID:

SELECT item_id 
FROM inv_bin
GROUP BY item_id HAVING COUNT(item_id) > 1
于 2013-02-15T19:51:16.030 回答