2つのテーブルを連結させる方法

このQ&Aのポイント
  • スケジュール管理のできるWEBアプリケーションを作成しようと考えています。
  • 下記構成において、2つのテーブルを連結させるクエリの書き方について教えて頂きたいです。
  • よろしくお願いします。
回答を見る
  • ベストアンサー

2つのテーブルを連結させる方法

スケジュール管理のできるWEBアプリケーションを作成しようと考えています。 下記構成において、2つのテーブルを連結させるクエリの書き方について教えて頂きたいです。 よろしくお願いします。 ▼DB内容 CREATE TABLE a ( id int primary key autoincrement, year varchar(4), month varchar(2), day varchar(2) ); CREATE TABLE b ( id int (※aテーブルとidで連結させたい) sche1 varchar(10), sche2 varchar(10), sche3 varchar(10), ) ・a +--+----+-----+---+-----+ | id | year | month | day | week | +--+----+-----+---+-----+ | 1 | 2010 | 11 | 20 | 土 | | 2 | 2010 | 11 | 21 | 日 | | 3 | 2010 | 11 | 22 | 月 | | 4 | 2010 | 11 | 23 | 火 | | 5 | 2010 | 11 | 24 | 水 | | 6 | 2010 | 11 | 25 | 木 | | 7 | 2010 | 11 | 26 | 金 | | 8 | 2010 | 11 | 27 | 土 | | 9 | 2010 | 11 | 28 | 日 | | 10 | 2010 | 11 | 29 | 月 | +--+----+-----+---+-----+ ・b +--+-----+------+ | id | sche1| sche2 | +--+-----+------+ | 1 | 空き | 空き | | 2 | 空き | 空き | | 3 | 仕事 | 空き | | 4 | 仕事 | 空き | | 5 | 仕事 | 空き | | 6 | 仕事 | 空き | | 7 | 仕事 | 空き | | 8 | 空き | 空き | | 9 | 空き | 空き | | 10 | 仕事 | 空き | +--+-----+------+ ▼ページ内容 <ユーザ側>日付選択画面 ・calendar.jsp +----------------------+ | << 2010 11月 >> | 日 月 火 水 木 金 土 | ___ _1 _2 _3 _4 _5 _6 | _7 _8 _9 10 11 12 13 | 14 15 16 17 18 19 20 | 21 22 23 24 25 26 27 | 28 29 30 +----------------------+ <ユーザ側>表示処理画面 ・sche.jsp +----------------------+ |2010 11 23 火 のスケジュール | |sch1 仕事 |sch2 空き | +----------------------+ <管理側>日付選択画面 ・m_calendar.jsp +----------------------+ | << 2010 11月 >> | 日 月 火 水 木 金 土 | ___ _1 _2 _3 _4 _5 _6 | _7 _8 _9 10 11 12 13 | 14 15 16 17 18 19 20 | 21 22 23 24 25 26 27 | 28 29 30 +----------------------+ <管理側>編集処理画面 ・m_sche.jsp +---------------------------+ |2010 11 23 火 のスケジュール | |sche1 | +--+-----+ | | ▼ | 仕事 | ※←プルダウンメニュー | +--+-----+ | |sche2 | +--+----+ | | ▼ | 空き | | +--+----+ | | | [登録ボタン] | +------------------+ ※ユーザ側の閲覧は携帯端末を考えてます。 ※値の保持や呼び出しは全てDBで管理しようと思います。 ※使用しているのはMySQL5.1です。

  • MySQL
  • 回答数1
  • ありがとう数2

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

  • ベストアンサー
  • pcb39431
  • ベストアンサー率84% (16/19)
回答No.1

SELECT (省略) FROM a , b WHERE a.id = b.id

a_tarou
質問者

お礼

おかげさまで解決しました!ありがとうございますo(_ _o)

関連するQ&A

  • DB設計についてアドバイスお願いします。

    作成するアプリケーションは簡単なスケジュール管理のできるWEBアプリケーションです。 以下、作成予定のテーブルです。 <tbl_date> id VARCHAR(50) ・・・PRIMARYKEY / not null / AUTO INCREMENT date VARCHAR(8) ・・・not null <tbl_schedule> id VARCHAR(50) ・・・PRIMARYKEY 、not null 、AUTO INCREMENT morning VARCHAR(50) afternoon VARCHAR(50) evening VARCHAR(50) 以下、ページ詳細です。ユーザー側と管理側に分けています。 <ユーザー側> 1ページ目 ⇒はじめのページで日付を選択する。プルダウンメニューで日付を選択してsubmitボタンを押すと選択された日付がDBに登録され、次の画面に遷移する。 2ページ目 ⇒登録されているスケジュールをDBから呼び出して表示する。 <管理側> 1ページ目 ⇒はじめのページで日付を選択する ※ユーザー側とは別のページ 2ページ目 ⇒スケジュールの編集画面。テキストフォームと登録されているスケジュールをDBから呼び出して表示する。 DB設計は初挑戦なので見当違いなところ多くあると思います... ご指摘、アドバイス等いただけたらと思います。よろしくお願いいたします。

  • アクセスログテーブルの構造について

    このジャンルでお願いします。 よくアクセスログの解析を無料で(リンクを貼ったりして)行ってくれるサービスがありますが、 そのデータベースの構造というかテーブルの構造はどのようになっているのでしょうか? 例えば、膨大なレコード数になると思うので それを利用するユーザー毎にテーブルを分けるとかするのでしょうか? あるいはユーザー毎、年毎、月毎、日毎、に分けるとか? 本来ならテーブルを分割したりするのは違うんじゃないかなぁと思ったりするのですが、 なので次のように、 CREATE TABLE `accesslog` ( `id` int NOT NULL auto_increment, `user_id` varchar(16), `created` datetime, `ip` varchar(64), FOREIGN KEY(`user_id`) REFERENCES `user`(`id`) ); ユーザーも全ての期間のデータも1つのテーブルで管理するのが普通だとは思うのですが、 アクセスログだけは利用するユーザー数にもよりますがやはり膨大になりますよね? そうすると1つのテーブルだと無理があると思うのです。 あるいは単にテキストファイルとして保存する方法もあるのかな?と思うのですが、 やはりなにかとSQLで操作したいのでMySQLなどのテーブルの設計が知りたいです。

  • 基準価額の更新のスケジュールの変更

    海外市場に投資している投資信託の基準価額の更新スケジュールについて伺います。 たとえば、本日は12/15(土)ですが、今までですと、海外時間12/13(木)に海外市場が閉じ、日本時間12/14(金)の日本の午前10時ごろの為替を反映して12/14付の基準価額として12/15(土)の早朝に更新がされていました。 週のスケジュールですと、「火」「水」「木」「金」「土」が更新日でした。 しかし、おそらく 2012年12月になってからは「月」「火」「水」「木」「金」となりました。 更新スケジュールが変更になったのでしょうか?

  • ハンゲームの不正ログイン対策について

    2012/05/22(火)12:51:20 成功 2012/05/22(火)09:01:40 失敗 114.168.135.21 IDとパスワードは一致していません。 2012/05/22(火)04:56:39 失敗 122.29.77.186 IDとパスワードは一致していません。 2012/05/22(火)04:44:54 失敗 221.184.82.78 IDとパスワードは一致していません。 2012/05/21(月)18:24:06 失敗 118.14.58.41 IDとパスワードは一致していません。 2012/05/21(月)14:03:17 失敗 220.97.221.121 IDとパスワードは一致していません。 2012/05/21(月)09:45:45 成功 2012/05/20(日)23:55:40 成功 2012/05/20(日)14:11:39 失敗 114.169.77.72 IDとパスワードは一致していません。 2012/05/20(日)11:59:45 失敗 58.94.228.90 IDとパスワードは一致していません。 2012/05/20(日)04:28:00 失敗 114.148.21.245 IDとパスワードは一致していません。 2012/05/20(日)00:41:30 失敗 114.164.12.245 IDとパスワードは一致していません。 2012/05/19(土)16:42:09 失敗 122.26.199.244 IDとパスワードは一致していません。 2012/05/19(土)15:41:49 成功 2012/05/19(土)09:31:04 成功 2012/05/19(土)04:20:56 失敗 125.207.171.114 IDとパスワードは一致していません。 2012/05/19(土)01:45:05 失敗 118.17.240.165 IDとパスワードは一致していません。 2012/05/18(金)23:31:18 失敗 122.16.145.79 IDとパスワードは一致していません。 2012/05/18(金)21:55:26 失敗 122.29.190.228 IDとパスワードは一致していません。 2012/05/18(金)20:48:36 失敗 122.21.79.251 IDとパスワードは一致していません。 2012/05/18(金)20:22:11 成功 - 2012/05/18(金)07:23:15 失敗 114.164.44.148 IDとパスワードは一致していません。 2012/05/18(金)07:12:50 失敗 118.6.178.191 IDとパスワードは一致していません。 2012/05/18(金)03:44:58 失敗 122.26.235.29 IDとパスワードは一致していません。 2012/05/18(金)03:37:20 失敗 118.8.44.217 IDとパスワードは一致していません。 2012/05/18(金)01:33:06 失敗 118.8.28.180 IDとパスワードは一致していません。 2012/05/17(木)23:10:04 成功 - 2012/05/17(木)08:30:05 失敗 114.148.32.16 IDとパスワードは一致していません。 2012/05/17(木)06:18:16 失敗 123.226.54.106 IDとパスワードは一致していません。 2012/05/17(木)00:17:57 失敗 118.22.211.223 IDとパスワードは一致していません。 2012/05/16(水)22:40:26 失敗 118.10.218.141 IDとパスワードは一致していません。 2012/05/16(水)22:38:00 失敗 114.168.132.1 IDとパスワードは一致していません。 2012/05/16(水)22:22:54 成功 - 2012/05/16(水)03:41:45 失敗 180.46.209.20 IDとパスワードは一致していません。 2012/05/16(水)02:30:36 失敗 222.144.108.253 IDとパスワードは一致していません。 2012/05/16(水)01:41:51 失敗 114.169.56.38 IDとパスワードは一致していません。 2012/05/15(火)21:11:24 失敗 114.150.54.60 IDとパスワードは一致していません。 2012/05/15(火)17:33:32 失敗 122.18.234.83 IDとパスワードは一致していません。 2012/05/15(火)14:14:04 成功 - 2012/05/15(火)04:46:38 失敗 220.97.219.61 IDとパスワードは一致していません 2012/05/15(火)02:07:23 失敗 118.11.82.174 IDとパスワードは一致していません。 2012/05/15(火)00:43:52 成功 114.145.98.91 - 2012/05/14(月)23:54:39 成功 - 2012/05/14(月)23:52:43 成功 - 2012/05/14(月)13:42:14 失敗 118.14.55.111 IDとパスワードは一致していません。 2012/05/14(月)12:23:55 失敗 122.29.17.136 IDとパスワードは一致していません。 2012/05/14(月)07:08:15 失敗 114.156.71.65 IDとパスワードは一致していません。 2012/05/14(月)04:27:35 失敗 60.33.209.89 IDとパスワードは一致していません。 2012/05/14(月)01:24:29 失敗 114.145.117.94 IDとパスワードは一致していません。 2012/05/13(日)23:18:26 成功 2012/05/13(日)23:17:46 成功 - 2012/05/12(土)18:28:24 失敗 125.207.195.75 IDとパスワードは一致していません。 2012/05/12(土)14:42:14 失敗 114.168.135.184 IDとパスワードは一致していません。 2012/05/12(土)14:33:00 失敗 180.11.54.65 IDとパスワードは一致していません。 2012/05/12(土)13:49:27 失敗 122.29.168.45 IDとパスワードは一致していません。 2012/05/12(土)13:48:42 失敗 180.1.49.142 IDとパスワードは一致していません。 2012/05/12(土)13:46:09 成功 - 2012/05/12(土)09:54:25 失敗 180.1.11.240 IDとパスワードは一致していません。 2012/05/12(土)03:44:08 失敗 125.207.168.184 IDとパスワードは一致していません。 2012/05/12(土)00:52:36 成功 114.145.35.46 ハンゲームのアカウントについて質問です 上記のように不正ログインされるんですが どうしたら対策できるのでしょうか? よくみたら二度ほど成功されていました・・・・ パスワードかえるしか手はないのですか? よろしくお願いします

  • Excelで1ヶ月分の日付列を設定する方法

    Excelで1ヶ月分の日付列を設定する方法を教えてください。 自分のオフィスでは、毎日の仕事時間を記録する表をExcelで作っています。社員が個人個人で時間を書き込み、1ヶ月分で一枚の表になります。 この表には "日付の列" があるのですが、毎月、この日付の列は自分で書き直さなければならないようになっています。 以下のように並んでいます。(締めが17日なので、18日から始まります。) 18 水 19 木 20 金 21 土 22 日 23 月 24 火 25 水 26 木 27 金 28 土 29 日 30 月 31 火 1 水 2 木 3 金 4 土 5 日 6 月 7 火 8 水 9 木 10 金 11 土 12 日 13 月 14 火 15 水 16 木 17 金 初日の18を 2006/10/18 と入れたら、日付と曜日が自動的に並ぶようにしたいのですが、いくつか問題があって、うまく設定できずにいます。 1. 行を変えてはいけない。 2. 2月や4月など31日まで無い月は、その行を空白とする。 3. すべての社員のPCに分析ツールがインストールされているわけではなく、EDATE関数が使えない。 4. マクロを含めたくない。 5. シートは1枚で。 なにか良いアイデアないでしょうか? 足し算・引き算でうまくいかなければ、やはりマクロしかないのでしょうか?

  • ウエイトトレーニング 予定通りスケジュールが組めないとき

    50代の筋トレマニア初心者です。 4月末から、3分割(火:脚、木:背・二頭筋、土:胸・肩・三頭筋)で各1時間ほどのトレーニングをしています。 先週から、仕事他の都合で上手くスケジュールが組めませんでした。 火:脚、金:背・二頭筋、次のトレーニングは明日火曜日になります。 そこで、今週は脚を飛ばし、火:胸・肩・三頭筋、木:背・二頭筋、土:胸・肩・三頭筋、来週火:脚、・・・で回そうと考えています。 理由は、 1.せっかくチンニングを取り入れて軌道に乗りそうな木:背・二頭筋を動かしたくない 2.ベンチプレスが好きだから(目差せ!1RM100kg!) 3.脚は2週間飛ばしても、日常生活でもかなり補えるはず の3つです。 相談するほどのことでもないのですが、筋トレマニアの方達は、予定通りに分割スケジュールが組めないときにはどーしていますか?

  • 曜日の順番

    曜日の順番は、何故、日、月、火、水、木、金、土?太陽系でなら、日、水、金、火、月、木、土になりますが、何故ですか?

  • SQLで曜日のソートを月火水木金土日にしたい

    こんにちは。SQLiteのソートについてお教え頂けませんでしょうか。 フィールドに曜日が入っています。その曜日をソートをかけると下記のようになります。 土 日 月 木 水 火 金 欲しい並び順は下記です。 日 月 火 水 木 金 土 Or 月 火 水 木 金 土 日 CSVに出力したり、色々したいので曜日順になっていてもらった方が色々助かるのですが、何か良い方法はないでしょうか? 今考えているのは、C#のフォームからSQL文を発行してSQLiteに問い合わせ。結果をC#側で受け取って、CSVに出力という事を考えています。

  • mysqlのif文かcase文で複数条件を指定する

    mysql初心者です。 3つのテーブルでスケジュールの仕組みを考えていますが Staff→スタッフデータ id  name 1   田中 Sch1→日付出勤 id  start_time  end_time  date  flg 1   9:00   22:30   2014-03-17   1 Sch2→曜日出勤 id  start_time  end_time  dateW 1   9:00   22:30   1 ※dateWは曜日(0~6) 日付出勤優先なので、なければ曜日出勤を出力します。 たとえば、 田中さん (1)日付登録:2014-03-17(月) 09:00-18:00 (2)曜日登録:1(月) 10:00-19:00 (3)曜日登録:2(火) 09:00-18:00 PHP側でやるなら、 for (一週間分回す) { if (Sch1[date]) { 日付設定出力 }else{ 曜日設定出力 } } 全出力した(日付、曜日)データを一個の配列に入れて、start_timeでソートするかで出力する。。 Mysqlのif文かcase文分でどう書いたらいいですか? 説明が下手ですが、 どなたかご存知の方がいらっしゃれば是非、ご教授ください。

    • ベストアンサー
    • MySQL
  • 表の結合

    今、スケジュール表を作っていますが、どうしても解らないので教えて下さい。 -スケジュール表の仕様- 1.以下のテーブルがあります。  DT_SCHEDULE(スケジュールデータ)  DT_USER(ユーザデータ)  MS_HOLIDAY(休日マスタ) 2.テーブルの内容は以下の通りです。  DT_SCHEDULE(スケジュールデータ)   USER_ID   INTEGER *   NEN     INTEGER *   TSUKI    INTEGER *   HI      INTEGER *   HOLIDAY   INTEGER   TITLE    VARCHAR(20)   CONTENT   VARCHAR(1000)  DT_USER(ユーザデータ)   USER_ID INTEGER *   USER_NAME  VARCHAR(20)  MS_HOLIDAY(休日マスタ)   NEN     INTEGER *   TSUKI    INTEGER *   HI      INTEGER *   HOLIDAY_NAME VARCHAR(20) ※*はキー項目です。 3.以下の条件です。 ・DT_SCHEDULE(スケジュールデータ)をもとに表示する。 ・指定した年月のスケジュールを表示する。 ・DT_SCHEDULE(スケジュールデータ)とMS_HOLIDAY(休日マスタ)に同じ日付が登録されている場合、DT_SCHEDULE(スケジュールデータ)のスケジュールを表示する。 ・ユーザ名は、DT_USER(ユーザデータ)を参照し表示する。 ・日付昇順で表示する。 4.求めたい結果は以下の通りです。  NEN  TSUKI  HI  HOLIDAY ※MS_HOLIDAY(休日マスタ)から表示する場合、1固定  USER_ID  USER_NAME  TITLE  ※MS_HOLIDAY(休日マスタ)から表示する場合、HOLIDAY_NAME  CONTENT ※MS_HOLIDAY(休日マスタ)から表示する場合、、空白 以下、わからない点です。 1.UNIONで結合したのですが、MS_HOLIDAY(休日マスタ)の項目が不足している。(HOLIDAY、CONTENT) 2.そもそもUNIONで結合する事が問題なのか? 以上、よろしくお願い致します。