2

MS Query で動作する左外部結合ステートメントを作成するのを手伝ってくれる人はいますか?

Hogan の回答とこの MSDN の記事に基づいて、SQL ステートメントをこれ (以下) に編集しましたが、MS Query はまだ満足していません。

SELECT CO.MATERIALS1 AS 'Material',
       CO.`SIZES#1` AS 'Size', 
       CO.`TOOLS#1` AS 'Tool',
       IR.`BODY /JAW` AS 'BodyJaw', 
       IR.PN AS 'PartNo'
FROM {oj `COMBINATIONS$` CO 
LEFT OUTER JOIN `'INSERTS REVIEW$'` IR 
ON [IR.TOOL LIKE '% ' CO.`TOOLS#1` ' %']
      AND [IR.SIZE LIKE '% ' CO.`SIZES#1` ' %']
      AND [IR.MATERIAL  LIKE '% ' CO.MATERIALS1 ' %']}

MS Query の構文は、私が過去に使用した標準の SQL / T-SQL とは少し異なるようで、何が必要かを理解するのに苦労しています。

上記のクエリでは、結合演算子を期待することについて次のエラーが表示されます。

ここに画像の説明を入力

中括弧{ }を削除しようとしましたが、テーブル oj について不平を言います:

ここに画像の説明を入力

参照を削除しようとしojましたが、無効なブラケットについて不平を言っています:

ここに画像の説明を入力

そして、欲求不満で、すべての括弧を削除しようとしましたが、演算子の構文エラーが見つからないという不平を言います:

ここに画像の説明を入力

それとは別に、構造、エスケープ文字、連結文字などについてかなりのバリエーションを試しました。MS Query で車輪を回しているだけのように感じます。MSQ のニュアンスに精通した誰かができることを願っています。私が間違っているところを指摘し、それを正しくするのを手伝ってください。


明確にするために、これが私が達成しようとしていることです。

次の 2 つのテーブルがあるとします。
コンボテーブル 表を挿入します

IR テーブルのサイズ、ツール、および材料を一致させて、CO テーブルで左結合を実行したいと考えています。
マッチ

この結果が得られるはずです:
望ましい結果


また、これは「P12」「JP12」の「P12」の一致を返すことを認識していますが、これは実際には望ましい動作ではありませんが、この基本的なクエリが機能するようになれば、それを解決できると思います。必要に応じて、そのフィールドのすべてのレコードの先頭または末尾に「/」を追加して、「LIKE '%/'」などで照合できるようにすることもできます。

4

4 に答える 4

2

これは「外部」結合であり、基準は where の一部ではなく結合の一部であることに注意してください。

SELECT CO.MATERIALS1 AS 'Material',
       CO.`SIZES#1` AS 'Size', 
       CO.`TOOLS#1` AS 'Tool',
       IR.`BODY /JAW` AS 'BodyJaw', 
       IR.PN AS 'PartNo'
FROM `COMBINATIONS$` CO
LEFT JOIN `'INSERTS REVIEW$'` IR 
       ON [IR.TOOL LIKE '% ' CO.`TOOLS#1` ' %'] 
      AND [IR.SIZE LIKE '% ' CO.`SIZES#1` ' %'] 
      AND [IR.MATERIAL  LIKE '% ' CO.MATERIALS1 ' %']
于 2016-08-19T20:03:42.213 に答える
1

以下の ms クエリで正確な結果が得られます。サンプル データで試してみたところ、スクリーン ショットが添付されています。

SELECT CO.TOOL, CO.Material, CO.SIZE, IR.PN  , IR.`BODY/JAW`
FROM `G:\test1.xlsx`.`COMBINATIONS$` CO
 LEFT JOIN  `G:\test1.xlsx`.`'INSERTS REVIEW$'` IR
 ON CO.TOOL=IR.TOOL
 AND ((IR.MATERIAL Like '%'+CO.Material+'%')) 
 AND ((IR.SIZE Like '%'+CO.Size+'%'))

テスト データを以下のスクリーン ショットに示します。

ここに画像の説明を入力 ここに画像の説明を入力

次のスクリーン ショットには、必要な ms クエリと結果が含まれています。

ここに画像の説明を入力

ここに画像の説明を入力

于 2016-08-22T20:52:42.457 に答える
1

これは機能しますか: 編集

SELECT CO.MATERIALS1 AS 'Material',
       CO.`SIZES#1` AS 'Size', 
       CO.`TOOLS#1` AS 'Tool',
       IR.`BODY /JAW` AS 'BodyJaw', 
       IR.PN AS 'PartNo'
FROM {oj `COMBINATIONS$` CO 
LEFT OUTER JOIN `'INSERTS REVIEW$'` IR 
ON [IR.TOOL LIKE '%' + CO.`TOOLS#1` + '%']
      AND [IR.SIZE LIKE '%' + CO.`SIZES#1` + '%']
      AND [IR.MATERIAL  LIKE '%' + CO.MATERIALS1 + '%']}
于 2016-08-22T16:54:23.873 に答える
0

ホーガンとブライアンの功績。

少し調整する必要がありましたが、最終的には次の半作業クエリになりました。MS Query が満足し、期待される結果のテーブルを作成したが、正しいテーブルから何も一致していない (または返されていない) という意味での半作業。(すべての行が null)

この質問を回答済みとしてマークし、期待されるデータが返されない理由について新しい質問を開始する必要があるかどうかはわかりません。
これはちょっとしたカメレオンの質問になりましたが、技術的にはまだ答えられていません (コードが期待どおりに動作しません)。


私が得た限りでは、ブレース{}を外す必要があるというホーガンの意見は正しかった。また、すべてのブラケットを削除する必要があることもわかりました[]

Brian は連結文字+が必要であるという点で正しかった。

だから私はこの半作業SQL文で終わった:

SELECT CO.MATERIALS1 ,
       CO.`SIZES#1` , 
       CO.`TOOLS#1` ,
       IR.`BODY /JAW` , 
       IR.PN 
FROM  `COMBINATIONS$` CO 
LEFT OUTER JOIN `'INSERTS REVIEW$'` IR 
ON IR.TOOL LIKE '%' + CO.`TOOLS#1` + '%'
      AND IR.SIZE LIKE '%' + CO.`SIZES#1` + '%'
      AND IR.MATERIAL  LIKE '%' + CO.MATERIALS1 + '%'
于 2016-08-22T17:54:01.947 に答える