まず、タイトルがその号の最高のものを表しているかどうかはわかりません. より良い提案は大歓迎です。私の問題は、次の表があることです。
+----+----------+-------+------------------+ | | ID | サプライヤー | バイヤー | VALIDATION_CODE | +----+----------+-------+------------------+ | | 1 | あ | Z | 937886521 | | | 2 | あ | X | 937886521 | | | 3 | ビ | Z | 145410916 | | | 4 | シー | V | 775709785 | +----+----------+-------+------------------+
BUYER Z、X を持つ SUPPLIERS A と B を表示する必要があります。ただし、この条件は1 対多ではなく1対 1の関係にしたいと考えています。つまり、サプライヤーAの場合、ID:1、2の列を表示したいのです。サプライヤーBの場合、列3のみを表示したいのです。次のスクリプトは、サプライヤ A と考えられるすべてのバイヤーを表示します (これは望ましくありません)。
SELECT *
FROM validation
WHERE supplier IN ( 'A', 'B' )
AND buyer IN ( 'X', 'Z');
これにより、(A,Z)、(A,X)、(B, Z) のペアが表示されます。次のみを表示する必要があります: (A,X)(B,Z) in one statement .
望ましい結果は次のようになります。
+----+----------+-------+------------------+ | | ID | サプライヤー | バイヤー | VALIDATION_CODE | +----+----------+-------+------------------+ | | 2 | あ | X | 937886521 | | | 3 | ビ | Z | 145410916 | +----+----------+-------+------------------+