データベースにテーブルAとテーブルBの2つのテーブルがあります-
Table `A`
SN | Order1 | Order2 | Text
(INT) | (TINYINT) | (TINYINT) | (VARCHAR)
1001 | 1 | 1 | ABC
1001 | 1 | 2 | DEF
1001 | 1 | 3 | GHI
1001 | 2 | 1 | IOU
1001 | 3 | 1 | JKL <--
1001 | 3 | 2 | LMO
1001 | 3 | 3 | UTF
....
1021 | 1 | 1 | ZXC
1021 | 1 | 2 | QWE
1021 | 2 | 1 | JKL <--
1021 | 3 | 1 | YOU
そして別のテーブルで
Table `B`
SN | Order1 | rSN | rOrder1
1021 | 2 | 1001 | 3
これで、結果のデータをクエリすると、次の1021
ようになります:-
Result Needed
1 | 1 | ZXC
1 | 2 | QWE
2 | 1 | JKL
2 | 2 | LMO
2 | 3 | UTF
3 | 1 | YOU
現在、私はこのような何かを試みています-
SELECT `SN`, `Order1`, `Order2`, `Text` FROM `Table A`
WHERE `SN`=1012
UNION
SELECT `SN`, `Order1`, `Order2`, `Text` FROM `Table A`
WHERE `Table A`.`SN`
IN (SELECT `rSN` FROM `Table B` WHERE `SN`=1021)
AND `Table A`.`Order1`
IN (SELECT `Order1` FROM `Table B` WHERE `SN`=1021)
これはこのような結果をもたらしています:-
Result
SN | Order1 | Order2 | Text
1021| 1 | 1 | ZXC
1021| 1 | 2 | QWE
1021| 2 | 1 | JKL
1021| 3 | 1 | YOU
1001| 3 | 1 | JKL
1001| 3 | 2 | LMO
1001| 3 | 3 | UTF
Order1
結果の最後の3行のとOrder2
を参照する行と同じにするために何をすべきですか?1001 | 2 | 2 | LMO
編集 - -
ここでは、クエリがデータ出力を提供するときと同じ値を取得することを考え ていますOrder1
。1001
Order1
1012
の順序Text
が重要です。
Order2テキストは、このGroup In Order1の対応する最初の値にTable B
関連付けられ、データベースにすでに入力されている重複する関連テキストへの参照を格納し、対応する位置を定義します。SN