2

2 つのテーブル tbl1 と tbl2 があり、どちらにも id 用と product 用の 2 つの列があります。両方にある行、つまり tbl1.id = tbl2.id と tbl1.product = tbl2.product の行を抽出し、tbl1 と tbl2 の行を 1 つの行に結合したいと考えています。

これは次のようになると思います:

SELECT tbl1.\*, tbl2.\*
FROM tbl1, tbl2
WHERE tbl1.id = tbl2.id
  AND tbl1.product = tbl2.product

また

SELECT tbl1.\*, tbl2.\*
FROM tbl1
  INNER JOIN tbl2 
    ON tbl1.id = tbl2.id
       AND tbl1.product = tbl2.product

?

2 つのスプレッドシートで製品の名前が同じでないという追加の問題があります。

tbl1 に製品名を保持するマッピング テーブルを追加し、各行に対応する tbl2 製品名を追加しました。

この追加されたテーブル (両方に存在する ID/製品の組み合わせごとに 1 つの行のみが出力される) を使用して、上記の SQL クエリと同等のことを達成するにはどうすればよいでしょうか?

助けてくれてありがとう。

(注: MS Access を使用しています)

4

3 に答える 3

3
SELECT
     t1.id,
     t1.product,
     t2.product
FROM
     tbl1 t1
LEFT OUTER JOIN mapping_table map ON
     map.id = tbl1.id
INNER JOIN tbl2 t2 ON
     t2.id = t1.id AND
     (t2.product = t1.product OR t2.product = map.tbl2_product)

t1 と t2 の製品名が同じであるが、マップ テーブルにも一致がある場合に、行を一致と見なすかどうかに基づいて、これを微調整する必要がある場合があります。また、2 つの製品の名前がす​​でに一致していても、すべての製品をマッピング テーブルに含めることを計画している場合。

于 2009-02-09T20:21:05.957 に答える
0
SELECT 
     tbl1.*, tbl2.*
FROM tbl1, tbl2, tbl3
 WHERE
     tbl1.id = tbl2.id
 AND tbl1.product = tbl3.product1
 AND tbl2.product = tbl3.product2
于 2009-02-09T20:20:27.597 に答える
0

マッピング テーブルの列の 1 つを使用するだけです。

于 2009-02-10T01:22:18.463 に答える