1

重複の可能性:
mysql での交差

共通データを取得するための php プロジェクトを行っています。MySQL クエリの記述が少し苦手です。私はさまざまな方法を試しましたが、適切な出力が得られません

私のテーブルは

 Id  Product-1   product-2
 -------------------------
 1      A           B
 2      B           C
 3      C           A
 4      E           B
 5      H           C

これは私のテーブルです。一般的な要素を取得する MySQL クエリを書きたいと思います。例: ここで A,B は Product-1,Product-2 になります。A,B の共通要素要素を取得したい ここで出力は C です

    3      C           A
    2      B           C

両方の行に、Product-1 または product-2 の A、B のいずれかを含めることができます

A、cの共通要素はBと同じです。これに対するクエリの書き方... SQLではIntersect操作を使用できますが、MySQLにはわかりません。助けてください...

4

1 に答える 1

2

クエリを複雑にする双方向の関係に列を使用する代わりに、一方向の関係を維持することをお勧めします。

したがって、次の意味の代わりA to CC to A:

Id  Product-1   Product-2
 -------------------------
 3      C           A

あなたは実際にこれを意味するために行いA to CますC to A

Id  Product-1   Product-2
 -------------------------
 2      A           C
 3      C           A

次に、重複がないと仮定すると、クエリは次のようになります。

SELECT Product-1
FROM tablename
WHERE Product-2 IN ('A', 'B')
GROUP BY Product-1
HAVING COUNT(*) = 2

ただし、データを使用すると、次のクエリで の共通要素が得られます'A', 'B'

SELECT Product-1 FROM
((SELECT Product-1, Product-2
 FROM tablename)
UNION
(SELECT Product-2, Product-1
 FROM tablename)) t
WHERE Product-2 IN ('A', 'B')
GROUP BY Product-1
HAVING COUNT(*) = 2

私が行ったことは、リレーションシップを逆にしたコピーを持つ派生テーブルを作成して、リレーションシップを一方向にし、通常どおり続行することです。

于 2012-02-21T18:41:43.140 に答える