SQL文でテーブルの結合と期間のデータを一度に引き出す方法はあるか?

このQ&Aのポイント
  • SQL文でテーブルの結合と特定の期間のデータを一度に取得する方法はありますか?
  • オラクルのDBを使用して、テーブルの結合と指定期間のデータを同時に抽出する方法を教えてください。
  • テーブルの結合と指定期間のデータを一括で取得するためのSQL文を教えてください。
回答を見る
  • ベストアンサー

SQL文について

テーブルの結合について教えてください。 (DBはオラクルです) select * from table1,table2 where table1.カラム名=table2.カラム名; で、結合が出来ることは分かりました。 やりたいことはテーブルの結合と、ある期間のデータを持ってきたいのです。 select カラム名 from table1 where カラム名 between '20020213' and '20020218'; で期間を決めて引き出すやり方も分かっています。 一度に結合と期間を決めて引き出すやりかたってどうすればよいですか? それとも不可能ですか? 教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • maro200
  • ベストアンサー率45% (15/33)
回答No.1

select * from table1,table2 where table1.カラム名=table2.カラム名 and table1.カラム名 between '20020213' and '20020218';

関連するQ&A

  • SQLの条件文

    以下のデータで、dataで始まり、かつ数値部分を100~300の範囲で抽出したいと考えています。 テーブル名はtable1、フィールド名はretuです。 -retu- data023 unknowndata data105 data203 data827 SELECT retu FROM table1 WHERE retu LIKE 'data%' AND CAST(RIGHT(retu,3) AS Int) BETWEEN 100 AND 300 上記のSQLを作ってみたのですが、これだとunknowndataに対してCASTが行われてしまうらしく、CASTが失敗してデータを取り出すことができませんでした。 正しくデータを取り出すためには、どのように記述すれば良いでしょうか?

  • Oracleのupdate文について

    OracleでテーブルB、Cを結合し取得できた項目で、テーブルAを更新したいのですがSQLがわかりません。結合結果とテーブルAは1:1にはなりません。 件数が結合結果>テーブルAの時もあれば、その逆の場合もあります。また、複数項目を更新したいです。実行して考えてみたいのですが、明朝客先ですぐに実行しなければならず(テスト環境はあるので明日そこで一旦確認後、すぐに本番環境で実行)、現在移動中→ホテル泊のため余裕がありません。 ネットで下記を見つけたのですが、更新する項目に更新日時を追加したいのと、テーブルAとの紐付けやEXISTSのWHEREはテーブルBとC両方の項目に紐づけたいです。 また、テーブルAの更新条件に、テーブルB、Cにはないcolumn③に対する条件も追加したいです。 UPDATE [TABLE①] A SET (COLUMN①, COLUMN②) = ( SELECT B.COLUMN, C.COLUMN FROM [TABLE②] B, [TABLE③] C WHERE B.COLUMN = C.COLUMN AND B.COLUMN = A.COLUMN ) WHERE EXISTS ( SELECT 1 FROM [TABLE②] B2 WHERE B2.COLUMN = A.COLUMN) もろもろとわかりづらい説明&他力本願で心苦しいのですが、どなたか教えていただけないでしょうか?

  • SQL 表の結合

    SQLで2つの表から条件に合ったデータを取り出し、同じ列に表示させたいのですが、 どうやっても外部結合のようにすることしかできませんでした。 取り出したデータを縦に結合?させることはできるのでしょうか? 例) dataは月の上旬中旬下旬でそれぞれabcとします。 入力値はmonthとdayで、これらからuriageを選択します。 dataの取りうる値はa,b,c,ab,bc,abcとします。    table:A 売上表            table:B 上旬中旬下旬判断 ---------------------------   -----------  key | data | month | uriage   day | data ---------------------------    -----------   1 |  a  |  1  |  500      1 |  a   2 |  ab  |  1  |  800     … |  …   3 |  bc  |  1  |  400     10 |  a   4 |  c  |  1  |  100     11 |  b   5 |  abc |  1  |  900     … |  …   … |  …  |  …  | …     31 |  c ---------------------------    ----------- month = 1 , day =5のとき  table:Bより   SELECT data FROM table:B WHERE day = 5 としてdata "a" を得ます。 この"a"と同じdataを持つuriageを表示させたいので   SELECT uriage FROM table:A   WHERE month = 1 AND data = (SELECT data FROM table:B WHERE day = 5) として  table:query1  --------    uriage  --------    500  -------- を得ました。 ここまでは良いのですが、これに付け加えて、 table:Bから取り出したdata "a"をtable:Aのdataが含むとき(data = a,ab,abcのとき) その全てのuriageを表示させたく、 ワイルドカードを使おうと   SELECT uriage FROM table:A   WHERE month = 1 AND data = %(SELECT data FROM table:B WHERE day = 5)% 等としてみたのですが、上手くいきませんでした。 そこで、別のクエリーを作って   SELECT uriage FROM table:A   WHERE month = 1 AND data = 'ab' AND data = 'abc' として  table:query2  ---------   uriage  ---------    800  ---------    900  ---------- を得ました。 そして、最後に、 得られた2つの表をまとめて  ---------   uriage  ---------    500  ---------    800  ---------    900  --------- としたいのですが、   SELECT uriage, uriage FROM query1, query2 とすると  ------------------   uriage | uriage  ------------------    500  |  800    500  |  900  ------------------ となりますし、UNIONは使い方がよくわからないためシンタックスエラーにしかならず...。 そもそも、縦に結合?はできるのでしょうか??? あれこれ試してみたのですが、詰まってしまったので、 どなたか知恵をお貸しください。

  • PL/SQLについて

    オラクル初心者ですが、他人が作ったSQLのWhere分で下記表記があります。 どういう意味でしょうか? where テーブル1.フィールド名1 = テーブル2.フィールド名1(+) AND テーブル1.フィールド名1 = テーブル3・フィールド名1(+) AND テーブル1.フィールド名1 = テーブル4.フィールド名1(+) AND ・・・・・続く ネットで調べると、結合の書き方のようですが、この場合どういった結合となるのでしょうか? 例えば、通常結合の場合、 SELECT テーブル1.フィールド1, テーブル2.フィールド1, テーブル3,フィールド1 FROM テーブル1 JOIN テーブル2 ON テーブル1.フィールド1=テーブル2.フィールド1 JOIN テーブル3 ON テーブル1.フィールド1=テーブル3.フィールド1 同様と考えてよろしいのでしょうか?

  • Oracle SQLの、where句内の条件文について教えてください。

    Oracle SQLの、where句内の条件文について教えてください。 下記SQLの(1)と(2)の記述文を教えてください。 (1)例:owner = sys,admin ownerがsysまたは、adminを抽出 (2)例:column_name = '*aaa*' column_nameに「aaa」が含まれているデータ SELECT owner, table_name,column_name FROM all_tab_columns WHERE (1)(Ownerを複数指定)   and (2)(column_nameに、●●が含まれるデータ)

  • 二つのcount()を一文で

    Select count(COLUMN_A) from TABLE_A where USERID=1 and FLAGS=1; Select count(COLUMN_A) from TABLE_A where USERID=1 and FLAGS=2; を1つの文で取得する方法はないでしょうか?

    • ベストアンサー
    • MySQL
  • SQL文を教えてください。

    MYSQLを使っています。 【売上テーブル】 || 日付 || 金額 || ----------------- || 2011/01/01 || 100 || || 2011/01/01 || 200 || || 2011/01/02 || 600 ||           ・           ・           ・ || 2012/12/31 || 500 || || 2012/12/31 || 100 || SELECT SUM(金額) FROM 売上テーブル WHERE 日付 BETWEEN '2011-01-01' AND '2011-12-31' GROUP BY DATE_FORMAT(日付, '%Y/%m') で月初から月末のデータを表示させることはできますが、 2011/01/10~2011/02/09を一か月として 以降は 2011/02/10~2011/03/09 2011/03/10~2011/04/09        ・        ・        ・ 2011/12/10~2012/01/09 といった感じに1年間のデータを表示させる方法がわかりません。 どうぞ宜しくお願いします。

    • ベストアンサー
    • MySQL
  • SQL文でエラーが出ます。

    MySQLの事で質問です。 テーブル1~4を結合してフィールド「comment」を検索 する時にフィールド「postDate」の降順でソートしたい のですがエラーが出ました。 「SQLコマンド」 select text from table1 union all select comment from table2 union all select comment from table3 union all select comment from table4 where match(commentIndex) against("検索ワード" in boolean mode) order by postDate desc; 試しに union all select comment from table2 union all select comment from table3 union all select comment from table4 の部分を削除して実行してみた所、成功しました。 後、order by postDate desc;のみ削除した場合でも成功しました。 エラーの内容はこれです↓↓ Unknown column 'postDate' in 'order clause' フィールド「postDate」は存在します。 (varchar型何ですが、それがいけないと思い date型やdatetime型と変えてみましたがダメでした) 何とかソートしたいのですがどうすればいいのでしょうか?

    • ベストアンサー
    • MySQL
  • PL/SQLのDELETE文について

    PL/SQLでDELETE文を書こうとしているのですが、 文法がわかりません。。。 分かる方がおられましたら、教えてくださいm(_ _)m 今、TABLE1を削除したいのですが、条件がいろいろあって、 以下のように書いてみたのですがダメでした。 こういう書き方は、できないんでしょうか・・・。 削除条件は、TABLE2に存在し、かつ、TABLE2のTENSUが0のもので、 TABLE3が存在しないものです。 DELETE TABLE1 FROM TABLE1 ,TABLE2 ,TABLE3 WHERE TABLE1.ID = TABLE2.ID AND TABLE2.TENSU = 0 AND Not Exists (SELECT TABLE3.ID FROM TABLE3 WHERE TABLE3.ID = TABLE2.ID) 説明が下手なので、うまく、伝わっているか、心配なのですが・・・、 よろしくお願いします。

  • SQL文 この部分はなんていうのでしょう?

    SELECT T_テーブル1.フィールド1 FROM T_テーブル1 ORDER BY T_テーブル1.フィールド1; なら、 ”ORDER BY句” SELECT T_テーブル1.フィールド1 FROM T_テーブル1 WHERE (((T_テーブル1.フィールド1)="A")); なら ”WHERE句” と言いますが、 DELETE Table1.* FROM Table1; や UPDATE テーブル1 Set テーブル1.フィールド1 = "い" WHERE (((テーブル1.フィールド1)=”あ")); や DROP Table Table1; の deleteやupdateやdropの部分は何て言うのでしょうか? そのまま、SELECT句DELETE句などというのでしょうか?

専門家に質問してみよう