• ベストアンサー

SQL文の処理速度向上策について

seimurakamの回答

回答No.2

> select DISTINCT a.1, a.2, a.3 (3つともKey項目です。) 同じ意味合いのキー項目がdata,insideにもあるようですので [SQL] select column1, column2, column3 from music where a.4 = 20091118 minus (   select column1, column2, column3 from data   union   select column1, column2, column3 from inside ) でいかがでしょう?

c_gen
質問者

お礼

返答ありがとうございました。 上記SQLで実行できることが確認できました。

関連するQ&A

  • SQL文にて

    調べたり聞いたりしたのですが なかなか解らなかったので、質問させてください。 AテーブルとBテーブルとがあり、Aテーブルのみにしか 存在しないデータを一発で取得することはできるのでしょうか? Aテーブルのデータ数(100件) Bテーブルのデータ数(80件) Aのキー項目とBのキー項目とは同一です。 処理をしたい事はAとBとでAにしか存在しないデータを ループせずに一回のSQLで行えたらと思っています。

  • ある条件でのSQLの取得方法について

    以下の条件でのSQLのデータの取得方法が分かりません。 2つのテーブルがあるとします。 ・テーブルA キー   項目1 10     X 20     Y ・テーブルB キー  項目2  項目3 10     5    C 10     6    D 12     6    E ここで取得する条件として ■テーブルAにあるのは、必ず取得します。 ■テーブルAのキーとテーブルBのキーは繋がり、繋がったテーブルBの情報は  別レコードとして取得します。 ■テーブルAのキー1つに対して、テーブルBのキーは無いかも知れないし、  複数件あるかも知れません。  無い場合はテーブルAの情報のみを出力し、複数件ある場合はその全てを出力します。 ■テーブルBの項目2が同じ値のデータがある場合、テーブルBを出力したレコードと  同じレコードに、項目2が同じデータの情報を出力します。  項目2が同じデータが無い場合はこの情報は出力しません。  項目2が同じ値のデータは最大2件しかありません。 上記の例の場合に出力したい結果 ・出力テーブルC キー  フラグ   項目1  項目2  項目3   項目2が同じキー  項目2が同じ値 10  テーブルA   X 10  テーブルB         5    C 10  テーブルB         6    D        12            E 20  テーブルA   Y (テーブルC のフラグとは、テーブルAの情報かテーブルBの情報かを示します) これを出来ればSQL、出来なければPL/SQLで取得したいのですが どちらの場合でも取得の方法に悩んでいます。 どのような方法で取得できるのでしょうか?

  • SQL文おしえてください

    例えば、以下のような 2 つのテーブルがあるとします。 営業所テーブル (会社名) (担当者名)           会社A 担当者A          会社A 担当者B          会社B 担当者C          会社C 担当者D 商品売上テーブル (担当者) (売上)           担当者A  10万           担当者C   5万           担当者D  10万 これを以下のように会社名Aの会社だけを条件に「担当者B」の売上レコードがない場合でも、ゼロ件としてレコードを取得したいんですがどのようにすればよいのでしょうか。   (会社名)(担当者) (売上)    会社A  担当者A  10万    会社A  担当者B   0万 よろしくお願いします。

  • 【至急】SQLの結合について教えてください(2)

    select * from A select ef from B where ef = '3' かつ、A.ab = B.ab and A.cd = B.cd 至急質問させてください。 上記SQLを結合したいです。 取得したいデータはAのテーブルの全項目で、 取得条件として、Aのテーブルのキー項目 = Bのテーブルのキー項目に、Bのテーブルの項目ef = '3' だったらという条件を加えたいです。 どのようなSQLがスマートでしょうか。。 無知で申し訳ございませんが、ご教授いただけますと幸いです。 よろしくお願いいたします。 ※キー項目の値は条件に指定できない(持っていない)ことがわかりました。 先ほどの質問にご回答下さった皆様、申し訳ございません。

  • 2つの情報を1つのSQLで取得する方法について

    お世話になります。 SQL文で、下記内容のデータを取得する方法がわかりません。 ・TESTテーブルからA、B、Cの3項目のデータを取得する。 ・但し、この中のC項目については、WHERE句の条件を満たす データの最大値を取得する。 ・項目AおよびBの取得条件は、項目Cと同一条件とする。 ・目的は、項目AおよびBに関しては、WHERE句の条件を満たす  全てのレコードを取得し、項目Cにおいては最大値のみ取得したい。 上記内容を取得しようと考えた場合、 現時点で下記のSQL文を作成して実行しましたが、 うまくデータが取得できません。 SELECT A, B, C FROM TEST WHERE C = (SELECT MAX(C) FROM TEST) AND Z = 'xxxxx' AND Y = 'x' AND X = 'Y' ※項目X, Y, ZはTESTテーブルのカラムです ※上記SQLを、A、Bのみ取得用とCのみ取得用に   それぞれ分解して実行すると、それぞれの結果は   正常に取得できます。 2つの結果を1つのSQLで取得することは可能でしょうか? どなたかご教授願えますか?よろしくお願いいたします。

  • SQL文

    SQLの初心者です。 Aテーブル(a項目,b項目,c項目)とBテーブル(a項目,d項目,e項目)のテーブルがあります。 d項目順でAテーブルの項目のみ出力するにはどうしたらいいのでしょうか。 例えば次のSQL文ではd項目順で出力されますが結合の為、AテーブルとBテーブルの全項目が出力されます。 SELECT * FROM Aテーブル LEFT OUTER JOIN DITKM ON Aテーブル.a項目 = Bテーブル.a項目 ORDER BY Bテーブル.d項目 次のSQL文のようにAテーブルの項目を選択したらAテーブルの項目のみ出力する事はわかります。 SELECT a項目,b項目,c項目 FROM Aテーブル LEFT OUTER JOIN DITKM ON Aテーブル.a項目 = Bテーブル.a項目 ORDER BY Bテーブル.d項目 今回はAテーブルの項目数が少ないのでこれでもいいのですが、項目数が多くなると大変です。 上の様に項目を選択しないでAテーブルの項目を全て出力する事は可能なのでしょうか。 宜しくお願い致します。

  • SQLについて教えてください

    お世話になります。 SQLについて教えてください AテーブルとBテーブルからCテーブルを作成したいのですが、 KEYをキーにAテーブルのIDが1で、YYMMが一番新しい項目(最大の項目)を 取得し、Cテーブル作成したいのですが、どのようにするのでしょうか? Aテーブル    Bテーブル   Cテーブル KEY ID yymm   KEY     KEY YYMM AAA 0 200612  AAA     AAA 200611 AAA 1 200611  BBB     BBB 200611 AAA 1 200609 BBB 0 200611 CCC 1 200611

  • 【至急】SQLの結合について教えてください。

    select * from A where ab = '1' and cd = '2' select ef from B where ab = '1' and cd = '2' and ef = '3' 至急質問させてください。 上記SQLを結合したいです。(Oracleです) 取得したいデータはAのテーブルの全項目で、 取得条件として、Bのテーブルの項目ef = '3' だったらという条件を加えたいです。 キー項目は両テーブルとも同じ(ab, cd)です。 どのようなSQLがスマートでしょうか。。 無知で申し訳ございませんが、ご教授いただけますと幸いです。 よろしくお願いいたします。

  • SQLで質問があります。

    すみません。初めて質問させて頂きます。 以下のような条件のSQL生成は可能でしょうか。 可能な場合どのようなSQLになるかご教授頂けないでしょうか。 <条件> テーブルA,B,Cで一致する社員コード AND テーブルAの年月日がnull AND テーブルBの区分コードが"01"以外 AND テーブルCの部門コードでテーブルDを検索し 取得した会社コードが"00001" <取得したい項目> テーブルA.社員コード テーブルA.社員氏名 テーブルC.区分コード <テーブルA> 社員コード* 会社コード 年月日 社員氏名 <テーブルB> 社員コード* 会社コード 区分コード <テーブルC> 社員コード* 会社コード 部門コード <テーブルD> 会社コード* 部門コード* *は主キー よろしくお願い致します。

  • SQL文で質問です

    SQL文で質問です。 テーブルA X NUMBER型 Y DATE型(年月日と時間) テーブルB Z NUMBER型 W DATE型(年月日) A,BをAを主テーブルとして外部結合し、同じ年月日でBには無いデータ を取得したいのですが、 SELECT A.X FROM A,B WHERE A.X = B.Z(+) AND A.Y = B.W(+) AND B.Z IS NULL; というSQL文を実行すると、テーブルAには時間まで登録されているので 実際には取得したいデータが存在しても 「レコードが選択されませんでした」 になってしまいます。このため、 SELECT A.X FROM A,B WHERE A.X = B.Z(+) AND TO_DATE(A.Y,'YYYY/MM/DD') = TO_DATE(B.W,'YYYY/MM/DD')(+) AND B.Z IS NULL; としてみたところ、今度は3行目で 「ORA-00936: 式がありません」 というエラーになってしまいます。 外部結合にしたことがエラーの原因のようなのですが、DATE型の項目を キーにして外部結合にするにはどうすれば良いのでしょうか?