- ベストアンサー
Access2000での簡単なデータベース作成とSQL文の使い方
- Access2000で簡単なデータベースを作成し、SQL文を使って特定の条件に合致するデータを取得する方法を詳しく説明します。
- データベースには実績明細テーブル、交換記録テーブル、車輌テーブル、社員テーブルがあります。これらのテーブルを適切に関連付けて、必要な情報を取得するためのSQL文を作成します。
- 例えば、特定の交換内容「AAA交換」の交換日から現在までの期間において各車輌の仕事の累計量を知りたい場合、SQL文を使ってデータを抽出する方法を解説します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
あのう、ASAHI-yukiさんが書かれたSQL、括弧の数がおかしいんですけど・・・ あと、どうしてselectでとってくる項目に「打設数量」そのものがあるのですか? 合計をとってきたい値なんですよね? で、「交換内容」がどこにもないのはどうして? もしかして私が勝手にASAHI-yukiさんの質問を適当に解釈して回答してました? ※ちなみに#3で書いたSQL、交換内容毎に全部出てきます。
その他の回答 (3)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
肝心な抽出条件間違えちゃいました(^^;; select 実績明細テーブル.車輌コード, 最新交換記録.交換内容, sum(打設数量) as 数量合計 from 実績明細テーブル, (select 車輌コード, 交換内容, max(交換日) as 最新交換日 from 交換記録テーブル group by 車輌コード, 交換内容) as 最新交換記録 where 実績明細テーブル.車輌コード = 最新交換記録.車輌コード and 作業日 >= 最新交換日 group by 実績明細テーブル.車輌コード, 最新交換記録.交換内容;
- taka_tetsu
- ベストアンサー率65% (1020/1553)
こんな感じかな? select 実績明細テーブル.車輌コード, 最新交換記録.交換内容, sum(打設数量) as 数量合計 from 実績明細テーブル, (select 車輌コード, 交換内容, max(交換日) from 交換記録テーブル group by 車輌コード, 交換内容) as 最新交換記録 where 実績明細テーブル.車輌コード = 最新交換記録.車輌コード group by 実績明細テーブル.車輌コード, 最新交換記録.交換内容; #インラインクエリー(from句の中でselectの結果を選択クエリーのように使用)使ってます。 #難しいSQLが書けないから質問しているような・・・
- kagep
- ベストアンサー率23% (171/721)
自分で書かれたSQL文も教えてください。
補足
SELECT 車輌コード,作業日,打設数量 ,(Select Sum(打設数量) From 実績明細テーブル) As Q WHERE Q.車輌コード=T.車輌コード AND Q.作業日<=T.作業日 AND Q.作業日>(Select Max(交換日) From 交換記録テーブル As M Where M.車輌コード=T.車輌コード) ) As 合計数量 FROM 実績明細テーブル As T WHERE 作業日>(Select Max(交換日) From 交換記録テーブル As S Where S.車輌コード=T.車輌コード) ORDER BY 車輌コード,作業日;
お礼
回答ありがとうございます。お恥ずかしい話ですが、書いたSQLは、2週間前くらいにSQL文について勉強し始めたときのものでありまして・・。書いていただいたSQLで求めたい内容がバッチリ出てきました。 ご回答を頂いてから、この週末SQL文について勉強しました。まず、最新交換日を求めるSQLを書き、置いておき、新たに打設数量の合計を求めるSQLを書き、そこに最新交換日SQLを代入するという形で順にすすめて行き、完成しました。だいたい書いていただいたSQLと同じで嬉しかったです。本当にご親切にありがとうございました。また、よろしくお願いします。