以下のように、LeftTable と RightTable という名前の 2 つのテーブルがあります。
左テーブル
obsid Name Value
1 Ronak A
2 Aakash B
3 Pankti C
4 Sanket D
右テーブル
obsid Name Value
1 Jhone F
2 Isabella M
3 Jonathan L
4 javafx p
今、私が何らかの条件で参加したとき、出力は以下のようになります
結果テーブル
obsid Name Value obsid Name Value
-------------------------------------------------------------------------
1 Ronak A 1 Jhone F
1 Ronak A 2 Isabella M
1 Ronak A 3 Jonathan L
1 Ronak A 4 javafx p
2 Aakash B 2 Isabella M
2 Aakash B 3 Jonathan L
2 Aakash B 4 javafx p
3 Pankti C 3 Jonathan L
3 Pankti C 4 javafx p
4 Sanket D 4 javafx p
この Left Join は、アプリケーションで一対多の関係を実現するのに役立ちます。
私のアプリケーションでは、左結合条件は動的です。そのため、ここで示したのは単なる例です。上記の例の左結合条件が LeftTable.Obsid <= RightTable.Obsid であるとします。今、1 対 1 の関係を実現したいと考えています。1 対 1 の関係とは、righttable レコードのいずれかが lefttable レコードと一度リンクされた場合、その righttble レコードは他の lefttable レコードとリンクできないことを意味します。
上記の例の場合、1対1の出力は次のとおりです
obsid Name Value obsid Name Value
1 Ronak A 1 Jhone F
2 Aakash B 2 Isabella M
3 Pankti C 3 Jonathan L
4 Sanket D 4 javafx p
私はこの機能を2つの方法で実現しました:
- カーソルの使用
- 選択クエリを使用して 1 つずつレコードをフェッチする
私のアプリケーションでは、データベース テーブルは動的です。そのため、1 つずつレコードを取得して処理するのに時間がかかるため、数百万のレコードの処理には時間がかかりすぎます。
単一選択クエリで一対一の関係を実現する方法はありますか??
レコードを 1 つずつ取得することを避けたいのですが、Mysql データベースを使用しています。
私を助けてください。