- ベストアンサー
抽出条件のドキュメント
データベースからデータを抽出する条件をドキュメント(文書)に書くとき、どんな書き方がよいですか。 使用するテーブル名、結合条件、抽出条件、ソート条件、group by句などを一覧表に書きたいのです。 わかりやすく誤解が生じにくいことが望ましいのですが、どうやって書いたらいいか毎度悩んでしまいます。特に複数のテーブルを結合する場合は書き方がむずかしく、いつも困っています。 何かよいお手本はないでしょうか。
- -manaka-
- お礼率83% (5/6)
- その他(データベース)
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
なかなかレスがつきませんね。 皆それぞれにやっていることはあるのでしょうが、それが正解という自信が無いのでしょう。 あなたの状況に合うかどうか分かりませんが私のやり方を書きます。 通常DB設計時にテーブル仕様書を書きます。 このフォーマットを少し変更して見出し部にSQL文の名称などを見出し部の注釈に、使用テーブル、抽出条件、結合条件、ソートキーなどを書きます。 明細部に項目名、タイプ、主キーかどうかを書きます。この摘要欄に元のテーブル、関数などを書きます。 つまり、sum(A) as B は項目名がBで摘要欄にsum(A)と書きます。groupキーもここに書きます。 たまにこれでは記述しにくいこともありますがそれは最後のほうで書いておきます。 私は速度にシビアな時以外はあまり複雑なSQLは使わずコードの中で処理してますので今のところこれで足りています。 参考になれば。
関連するQ&A
- SELECT文のソート条件
PL/SQLのカーソル定義にて困っています。 SELECT文のORDER BYでソートをかけますが、 例として、引数を2つ与えとします。 2つの値が同値であった場合、次にソートの条件となるのは何なのでしょうか? GROUP BY,WHERE句等はありません。 初歩的な質問過ぎて逆に中々見つけられませんでした。 どなたかご存知の方、教えて頂けますでしょうか。 よろしくお願いします。
- ベストアンサー
- Oracle
- 複数条件の検索について
複数条件の検索について お世話になります。 MySQL上の以下のテーブルからのデータ抽出に困っています。 SUM関数・COUNT関数およびGROUP BYを使い、また、内部結合・外部結合など考えられる手法は試したのですが、構文が悪いのか欲しい結果が得られません。正しい構文についてご教授いただけると大変助かります。 テーブル名:スコア ID 得点 -- ---- 1 10 2 15 1 5 2 25 欲しい結果: ID 合計得点 10点以上~30点未満の件数 -- -------- ------------------------ 1 15 1 2 40 2 宜しくお願いいたします。
- ベストアンサー
- MySQL
- ★Mysql 同じ条件で●●から同じ数だけ抽出!
SELECT * FROM `table` WHERE `abc`=1 and `def`=3 and GROUP BY ●● order by rand(); この条件なら、●●が1件ずつ計30件が抽出されます。 が、 私がやりたいのは、●●から3件ずつで、 3×30=90件 抽出したいです。 一文でできるのでしょうか? 初心者ですみません。 よろしくお願いします。
- 締切済み
- MySQL
- アクセス:クロス集計の抽出条件
添付のようなテーブルがあり下記のSQLを実行するとクエリ1になるのですが、合計数に抽出条件を入れてクエリ2のように10個以下のものは表示しないようしたいと思います。 下記SQLをどのように直したらよいでしょうか。一つのクエリで行う方法を教えて下さい。 TRANSFORM Sum([テーブル1].個数) AS 個数の合計 SELECT [テーブル1].[くだもの], Sum([テーブル1].個数) AS 合計 FROM テーブル1 GROUP BY [テーブル1].[くだもの] PIVOT [テーブル1].月;
- ベストアンサー
- オフィス系ソフト
- アクセス:クロス集計の抽出条件-2
質問No.9247365 で類似した質問をしました。 添付のようなテーブルがあり下記のSQLを実行するとクエリ1になるのですが、カウントに抽出条件を入れてクエリ3のように合計件数が1のものは集計しないようしたいと思います。 下記SQLをどのように直したらよいでしょうか。一つのクエリで行う方法を教えて下さい。 TRANSFORM Count([テーブル1].[くだもの]) AS くだもののカウント SELECT [テーブル1].[くだもの], Count([テーブル1].個数) AS 合計 FROM テーブル1 GROUP BY [テーブル1].[くだもの] PIVOT [テーブル1].月;
- ベストアンサー
- オフィス系ソフト
- 最大値を含むレコードの抽出
あるテーブルから、最大値を持つレコードのキーと最大値だけでなく、そのレコードの値を出したいと思います。 最大値をもつレコードを抽出して、元のレコードと結合するしか方法はないのかなと思い、類似した質問があるような気もするのですが、条件が異なるとうまく行かないため、自分なりに考えてみました。 データベースはDB2です。 SELECT a.倉庫,a.品目,a.単価 FROM 在庫マスタ as a where (a.品目,a.単価) in (select b.品目, max(b.単価) from 在庫マスタ as b group by b.品目) つまり、副問合せするときの結合キーが複数あるとSQLがエラーになってしまうようなのです。 結合キーが2つ以上ある時、このようなパターンの対処方法は無いでしょうか?
- ベストアンサー
- その他(データベース)
- フォームからクエリの抽出条件を入力する方法
既存のデータベースより複数のテーブルを結合し、必要なカラムだけを表示させるようなクエリを作成しました。 他の人でも操作ができるように、フォームを作成し、テキストボックスにて抽出条件を指定し、クエリやレポートを出力するような形にしたいと思っています。 このクエリの抽出条件をフォームより指定する方法で悩んでいます。 現在、作成したクエリの抽出条件の中に [Forms]![フォーム名]![テキストボックス名] と入力し、フォームのテキストボックスで抽出条件を記入してクエリを実行させているのですが、これでは複雑な条件 (Between~ や 条件1 or 条件2 等の指定) を入れると「直前の操作はキャンセルされました」とポップアップが出てしまい、思うとおりにうごきません。 フォーム内でこのような抽出条件範囲の指定ができるようにするにはどうしたらよろしいでしょうか? よろしくおねがいします。
- 締切済み
- その他(プログラミング・開発)
- 合計を抽出条件にする
こんにちは 初心者の質問で恐縮ですが select sum(a),sum(b),date from x where sum(a) > 30 group by date の様に日計Aが30以上の条件に対して抽出するようなことはできますか?
- 締切済み
- Oracle
- 2つの条件を満たすのレコードのカラムを抽出する方法について
下記のテーブルがあったとします。 【t_tblテーブル】 ――――――――――――― |id1 |id2 |id3 | ――――――――――――― |1 |1 |10 | |1 |2 |12 | |1 |3 |9 | |1 |4 |8 | |1 |5 |14 | |2 |1 |14 | |2 |2 |8 | |2 |3 |9 | |2 |4 |12 | |2 |5 |10 | |3 |1 |4 | |3 |2 |2 | |3 |3 |3 | |3 |4 |5 | |3 |5 |6 | |4 |1 |6 | |4 |2 |5 | |4 |3 |3 | |4 |4 |2 | |4 |5 |4 | ――――――――――――― このテーブルの特定のレコードを抽出する為に、 2つパラメータを渡すとします。 1. 12 2. 8 そして下記の条件を満たすレコードのid1を抽出したいと思います。 1. 「id3」 = 「12」 かつ 「id3」 = 「8」 を満たすid1 (※この時点で1と2がヒットします) 2. 条件1を満たした上で、「12」のid2 < 「8」のid2 (※この時点で1のみヒットします) 下記のSQLで条件1を満たせる事は確認しましたが、 条件2を満たす方法が分かりませんでしたので、 アドバイスいただける方がいらっしゃいましたら、 ご教示いただきたいと思います。 select id1 from t_tbl group by id1 Having SUM(CASE WHEN id3=12 Then 1 Else 0 End)>0 And SUM(CASE WHEN id3=8 Then 1 Else 0 End)>0 使用バージョンは7.4.19です。 よろしくお願いします。
- ベストアンサー
- PostgreSQL
- アクセス2000でデータ抽出時に・・・。
以前、質問No.203113で教えていただいたデータ抽出方法を応用して、別のデータベースでも同じようなものを作ったのですが、条件を入力して抽出できるものと出来ないものが出てきました。エラーとして「実行時エラー'2185':コントロールがフォーカスを取得していない時に、コントロールのプロパティまたはメソッドを参照することはできません。」と出ます。 テーブルには、T_グループ名、T_個人名簿、T_住所一覧があり、T_グループ名に付けたサブデータシートではT_個人名簿が正しく表示されているのに(グループ名でリンクしている)、T_グループ名とT_個人名簿から作ったクエリではデータが漏れています(T_個人名簿で代表者をチェックしてグループ名とその代表者がわかるように選択クエリを作っています)。このクエリをもとにフォームを作っているのですが、ここで表示されていないデータの抽出条件を入れると、上のようなエラーが出ます。クエリで表示されているものは上手く抽出できます。 このクエリをもとに作ったフォームだから、条件を入れても抽出できないのだろう、と言うことはわかるのですが、解決方法がわかりません。 ビギナーなので、どのように表現すればわかっていただけるのか・・・。わかりにくい内容ですが、どなたかご指導お願いします。
- ベストアンサー
- その他(データベース)
お礼
レスありがとうございす。 なかなか反応がなくて、あきらめかけておりました。 社内で標準になるようなマトリクス的なもの(非IT系の人にも理解してもらえるような)を想定していたのですが、やはり「これがスタンダードだ!」という書き方はないのでしょうね。テンプレートみたいなものがあると助かるなあと思っていましたが。 rivoisuさんのおっしゃるように、テーブル設計書をベースに抽出条件欄、結合条件欄、ソートキー欄、groupキー欄などを設けることにします。 その際、もしテーブルだけでなくビューに対する結合がある場合は、そのビューについてのドキュメントは別紙に分けた方がわかりやすいでしょうか? それから、データベースを中心にした詳細設計の書き方についてのよい本などありましたら紹介していただけるとうれしいです。