- リストアイテム
2つのテーブルを結合して、一意の値を持つ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;
いつもお世話になっております。