http://okwave.jp/qa/q8328454.html
にて解決済みとしてしまいましたが、問題がありました。
クロス結合になってしまい、重複した結果が出力されてしまいます。
1個の結果だと1個の出力ですが、2個の結果だと4個の出力となってしまい、2乗できいてきてしまいます。
ご教示のほど、よろしくお願いいたします。
----------------------------------------------------------------
下記SQL文と同一の結果を出力しつつ、高速化は可能ですか?
ARCHIVE_SAMPLEとARCHIVE_ORDERが大きくなると著しくパフォーマンスが下がります。
ARCHIVE_ORDERにて検索をかけた結果のArchiveIDとOrder_SampleIDが一致するARCHIVE_SAMPLEを出力したいです。
データサイズとしては、ARCHIVE_ORDER<<ARCHIVE_SAMPLEなので、ORDER側で検索しています。
SELECT * FROM ARCHIVE_SAMPLE M WHERE M.ArchiveID IN (SELECT ArchiveID FROM ARCHIVE_ORDER WHERE UPPER(Order_PatientID) LIKE UPPER('%234%')) AND M.Order_SampleID IN (SELECT Order_SampleID FROM ARCHIVE_ORDER WHERE UPPER(Order_PatientID) LIKE UPPER('%234%'))
----------------------------------------------------------------
No.1ベストアンサー
- 回答日時:
前回の回答を転載しておきます。
> SELECT [mの全てのフィールドの列挙]
> FROM Archive_Sample m JOIN Archive_Order o
> ON m.ArchiveID=o.ArchiveID AND m.Order_Sampleid=o.Order_SampleID
> WHERE UPPER(o.Order_PatientID) LIKE '%234%'
SELECTの後ろにDISTINCTをつけてください。
No.3
- 回答日時:
【ARCHIVE_SAMPLE】
ArchiveID Order_SampleID
1 2
2 1
【ARCHIVE_ORDER】
ArchiveID Order_SampleID
1 1
2 2
こういうデータがあると抽出結果は2件になっていいんですか?
やりたいことはこうじゃないんですかね??
SELECT M.*
FROM ARCHIVE_SAMPLE M
WHERE EXISTS (
SELECT AO.ArchiveID, AO.Order_SampleID
FROM ARCHIVE_ORDER AO
WHERE AO.Order_PatientID LIKE '%234%'
AND M.ArchiveID = AO.ArchiveID
AND M.Order_SampleID = AO.Order_SampleID
)
また、LIKEでUPPER()を利用していますが、不要、かつカラムに指定することで
インデックスが利かなくなります。
No.2
- 回答日時:
前回のSQLは決してクロス結合ではないですが・・・。
データの関連性の問題ですよね。
で、別解としてEXISTSを使ってはどうでしょうか。
SELECT
*
FROM
ARCHIVE_SAMPLE M
WHERE EXISTS (
SELECT *
FROM ARCHIVE_ORDER O
WHERE M.ArchiveID = O.ArchiveID
AND M.Order_SampleID = O.Order_SampleID
AND UPPER(Order_PatientID) LIKE UPPER('%234%')
);
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- PostgreSQL SQLで検索結果の記事を表示したい 1 2022/04/28 21:03
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「名前(first name) 1 2023/06/24 13:03
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS で 項目名を出力せずに...
-
Access データベースの最適化を...
-
エクセルで縦のカラムデータを...
-
Access Excel出力する保存先を...
-
Accessでエクセル出力の保存先指定
-
アクセスクエリ(複数)→マクロ...
-
AccessのデータをExcelの決まっ...
-
ACCESSで毎回CSVファイルをテー...
-
Access2013の質問です
-
クエリデータの取り出し
-
ACCESSのエクスポートでEXCELの...
-
共有フォルダに誰が何にアクセ...
-
SQLPLUSで結果を画面に表示しない
-
【Excel】[Expression.Error] ...
-
Batch: フォルダ内の特定のファ...
-
特定のエクセルファイルを起動...
-
月が変わったら自動でシートが...
-
#1062 - '0' は索引 'PRIMARY' ...
-
VBAでCSVファイルが使用中かど...
-
tmpファイル なぜできる?削除...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS で 項目名を出力せずに...
-
アクセスクエリ(複数)→マクロ...
-
エクセルで縦のカラムデータを...
-
Accessでエクセル出力の保存先指定
-
Access Excel出力する保存先を...
-
Access データベースの最適化を...
-
指数表示しない方法
-
teraterm から起動したプログラ...
-
EXCELでシート別にPDF出力出来...
-
AccessのデータをExcelの決まっ...
-
アクセスからエクスポートする...
-
AccessでUTF-8のtxtデータを出力
-
エクセル 入力フォームのデータ...
-
ACCESSのエクスポートでEXCELの...
-
Access内の任意のクエリを指定...
-
Access2013の質問です
-
Accessのデータを既存のExcelフ...
-
エクセルVBA レイアウト変更CS...
-
Accessレポート出力時の範囲指定
-
T-SQLでselectの結果をCSV出力...
おすすめ情報