• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数のテーブルを参照するselect文の書き方について)

複数のテーブルを参照するselect文の書き方について

このQ&Aのポイント
  • データベース初心者の方に向けて、複数のテーブルを参照するSELECT文の書き方について解説します。
  • 具体的なデータ構造として、テーブル1にはデータ番号とデータ名が、テーブル2には時刻とデータ0〜3が格納されているとします。
  • この質問では、テーブル1からデータ番号を参照し、テーブル2から該当データの値を取得したい場合のSELECT文の書き方についての方法を説明します。

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

つまり、     時刻 データ名称 データ (行1)12:00 湿度  36 というような結果が返ってくる風にしたいのですね? この目的だとテーブル構造の方が適してないと思うな。個人的には。テーブル2の方をこう変えたい。 テーブル2’     時刻  データ番号 データ (行1)10:00    0    27 (行2)10:00    1    37 (行3)10:00    2    50   ・   ・   ・ (行n)12:00    1    36   ・   ・   ・ (行z)13:00    2    32 この構造だと、 select 2'.時刻, 1.データ名称, 2'.データ from 1, 2' where 1.データ番号=2'.データ番号 and 2'.時刻=12:00 と一発だ。どうしてもあれなら、 select 2.時刻, 1.データ名称, 2.データ1 from 1, 2 where 1.データ番号=1 and 2.時刻=12:00 とすれば出てくるかも知れない(未検証)が、select句の中を動的に作成しなければならないなど、DBシステムとして保守しづらそう・・・・。

solad0313
質問者

お礼

さっそくのご回答、ありがとうございます。 はじめはご指摘のような構造を考えたのですが、実は、本当のデータは、テーブル2の列に相当するデータ種別がかなり多く、すべてのデータに時刻が付くとなると、何だかえらく無駄が多いような気がして、何かいい方法があるのではないかと思い、質問した次第です。 ご指摘にあった「DBシステムとして保守しづらそう」というのはもっともだと思いました。保守のことは考えていませんでした。もう一度、考えてみたいと思います。ありがとうございました。

その他の回答 (2)

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.3

> すべてのデータに時刻が付くとなると、何だかえらく無駄が多いような気がして でしたら、「記録時間」テーブルのようなものを用意して、テーブル2(データテーブル)ではそのIDを記録する形にするというのはいかがでしょうか? (更新処理がちょっと面倒になりますが)

solad0313
質問者

お礼

ご回答ありがとうございます。 ご指摘の点を考慮して、 テーブルの構造を再度検討します。

noname#182251
noname#182251
回答No.2

「データ構造が不自然」は#1の回答と同様、第一感です。 たとえば テーブル      時刻      温度    湿度      水位 (行1) 10:00      27     37      50 (行2) 11:00      28     36      40 (行3) 12:00      29     36      35 (行4) 13:00      31     35      32 では拙いのでしょうか。あるいはデータ種別が多く、一回の観測でその一部しか観測しないのであれば 1.観測種別マスタ 2.観測記録(観測日時、観測者、etc.) 3.観測値(観測種別ID、観測記録ID、値) のようなテーブル構造にするとか。 データの種別や観測システムに関する補足説明が欲しいです。

関連するQ&A