2017-04-11 12 views
2

は、だから私は(これはちょうど空の場所のリストを引っ張っている)ない句で開いたクエリとSQL Serverをフィルタリングしない

|loc| 

|ECA001| 
_____ 

インベントリをこの


Inventoryテーブルのように見える2つのテーブルを持っています転送ジョブの一覧表は

|id | oid | sku | from_loc | to_loc | tag | qty | processed | create_date | processed date 

|2 | 003 | 123 | SD034 | |T100010| 2 | NULL | 2017-04-06 | NULL 

___ 

私は何をしたいInventory_Transfer_Job_List_Tableを移入です。私の最初のテーブルの次の空の場所にTo_loc &まだ私のInventory_Transfer_Job_List.to_locテーブルで使用されていない位置

私は正しいデータを挿入していることを更新する前にselect文を実行しています。

私は

select * from 
    (select loc from openquery(wms7,'SELECT lc_f.loc FROM lc_f left join iv_f on 
    lc_f.loc = iv_f.loc WHERE lc_f.loc like ''EC%'' AND lc_f.loc not in (select 
    loc from iv_f where loc like ''EC%'' OR loc = ''ECRETURNS'')')) as a , 
[db1].[dbo].[ECOM_Transfer_Inventory_Job_List] as b 
where to_loc = '' 
and a.loc not in (SELECT to_loc 
       FROM [db1].[dbo].[ECOM_Transfer_Inventory_Job_List] 
       WHERE to_loc != '') 

を試みたが、私はちょうど、すでに使用されているものをフィルタリングする代わりに、それの繰り返し値

ex. 
loc | id | oid | sku | from_loc | to_loc | tag | qty | processed | create_date | processed date 

|ECA001| 1 | 0001 |0003 | MCA022 | | T100001| 2 | Null | 2017-04-06 | NULL 

|ECA001| 7 | 0023 |0015 | MCA049 | | T100051| 12 | Null | 2017-04-06 | NULL 

を取得しています。

ヘルプヘルプは素晴らしいことだ。ここ

+0

あなたは 'CROSS JOIN'をやっています。だからあなたは[デカルト製品](https://en.wikipedia.org/wiki/Cartesian_product)を手に入れようとしています。 – BJones

+0

SQL ServerまたはInformixと同じものではありません... –

+0

私はSQL Server上に構築していますが、openqueryはinformixです –

答えて

1

は、クエリが何をしているかの一例である、あなたに感謝。

SELECT * 
FROM (SELECT 1 a 
     UNION ALL 
     SELECT 2) a, 
(SELECT 3 b 
    UNION ALL 
SELECT 4) b 

WHERE Something in table a = something in table bを追加してみてください。

それともON a.Column = b.Column

あなたはSQL-Serverのおそらく2008 +を持っている場合は、以下のようなものが、あなたのニーズに合わせます。

SELECT * FROM 
(SELECT ROW_NUMBER() OVER(ORDER BY loc) AS RowNum, loc 
FROM OPENQUERY(wms7,'SELECT lc_f.loc FROM lc_f LEFT JOIN iv_f ON 
lc_f.loc = iv_f.loc WHERE lc_f.loc LIKE ''EC%'' AND lc_f.loc NOT IN (SELECT 
loc FROM iv_f WHERE loc LIKE ''EC%'' OR loc = ''ECRETURNS'')')) AS a 
JOIN (SELECT ROW_NUMBER() OVER(ORDER BY Id) AS RowNum, * 
    FROM [db1].[dbo].[ECOM_Transfer_Inventory_Job_List]) AS b ON a.RowNum = b.RowNum 
WHERE b.to_loc = '' 
    AND a.loc NOT IN (SELECT to_loc 
        FROM [db1].[dbo].[ECOM_Transfer_Inventory_Job_List] 
        WHERE to_loc != '') 
+0

ありがとうございますが、一致する共通の列がない場合はどうすれば参加する必要がありますか? –

+0

@CharlesCooper、ビジネス要件に基づいて決定する必要があるかもしれませんが、上記の編集が役立つかもしれません。 – BJones

+0

あなたは男です!デカルト製品について教えてくれてありがとう。 –

関連する問題