- ベストアンサー
SQLで3つのテーブルを結合する方法
- SQL初心者の方が3つのテーブルを結合する方法について質問されています。具体的な条件として、品種機械テーブルから使用日付が最大の行データを取得し、その品種と一致する行データを品種テーブル、機械テーブルからそれぞれ取得する方法を教えて欲しいとのことです。
- 質問者はうまい方法が思いつかないため、アドバイスや参考になりそうなホームページなどを教えてほしいとも述べています。
- 上記の質問文章はSQLの初心者が3つのテーブルを結合する方法についての質問です。具体的な条件としては、品種機械テーブルから使用日付が最大の行データを取得し、その品種と一致する行データを品種テーブル、機械テーブルからそれぞれ取得する方法を知りたいとのことです。また、質問者はうまい方法が思いつかないため、アドバイスや参考になりそうなホームページなどを教えてほしいとも述べています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (3)
- bonaron
- ベストアンサー率64% (482/745)
- chukenkenkou
- ベストアンサー率43% (833/1926)
- bonaron
- ベストアンサー率64% (482/745)
関連するQ&A
- テーブル結合のSQL文について
はじめまして、よろしくお願いします。 テーブルA、B、Cから情報を取得し、下記のSELECTイメージを表示させたいのですが、 どのようなSQLを記述すれば良いのかわからず、困っております。 どなたかご教示頂けますでしょうか。 SELECTイメージ 日付 キー ------------ ------------- 9/1 AAAAA 9/1 CCCCC 9/2 AAAAA 9/2 CCCCC 9/3 AAAAA 9/3 BBBBB 9/3 CCCCC 9/4 AAAAA 9/4 BBBBB 9/4 CCCCC テーブルA 日付 キー ------------- ------------- 8/31 AAAAA 8/31 CCCCC テーブルB 日付 キー ------------ ------------- 9/1 AAAAA 9/3 BBBBB 9/4 CCCCC テーブルC 日付 ------------- ・ ・ ・ 8/31 9/1 9/2 9/3 9/4 9/5 9/6 ・ ・ ・
- 締切済み
- Oracle
- 2つのテーブル結合
Oracle10g使用しています。 テーブルAとテーブルBを結合させてデータを取得したいと思っています。 [テーブルA] ID name 1 A 2 B 3 C 4 D [テーブルB] ID SEQ VALUE 1 1 111 2 1 222 2 2 333 3 1 444 4 1 555 4 2 666 4 3 777 テーブルAのキーは[ID]、テーブルBのキーは[ID,SEQ]です。 この二つを連結して以下のように出力したいと思っています。 ID SEQ NAME VALUE 1 1 A 111 2 2 B 333 3 1 C 444 4 3 D 777 テーブルBのデータは同じIDのうち最大のSEQのものを取得したいのですが よいSQLが思いつきません。 よい方法があればご教授ください。 よろしくお願いいたします。
- ベストアンサー
- Oracle
- SQL SEREVER で選択した固定値との結合について質問です。
SQL SEREVER で選択した固定値との結合について質問です。 日付と紐付けたデータを1ヶ月分出力するSQLを作成しています。 紐付け対象となるデータに、1ヶ月毎日のデータが存在するわけではありません。 そこで、固定値として2010年7月であれば、 2010-07-01~2010-07-31 までの日付を全て固定値として取得 (対象データは行で取得したいのでUnionで繋いでいく)して、 その日付と紐づく対象データを外部結合しようと考えました。 SqlServerの場合、固定値のみを取得した場合 ダミーテーブルを使用するということができないようなので、 取得した固定値との紐付け時に下記???のところの指定がわかりません。 Select '2010-07-01' 日付 Left Join 結合対象テーブル On 結合対象テーブル.日付 = ???.日付 他のやり方で実現可能なのかもしれませんが、調べてもわかりませんでした お解りになる方いらっしゃいましたら、教えていただければと思います。
- ベストアンサー
- SQL Server
- SQL 重複しないJoinの仕方を教えてください
データが重複しないSQL文の書き方を教えてください。 下記のような2つのテーブルがあり、「管理番号」でOnして「使用数」をJoinさせ、かつ重複しないようにSQLを作成したいのですが、MySQLで可能でしょうか? ※0002に関しては、テーブル2の方がデータ数が多いため、Join後は2行になって「使用数」は重複せず、「数」の部分には0が入ればベストです 【テーブル1】 日付 品番 管理番号 数 2012/6/12 A987 0001 500 2012/6/14 A987 0001 300 2012/6/16 A987 0001 400 2012/6/18 A987 0001 800 2012/6/12 A987 0002 750 2012/6/12 A987 0003 540 2012/6/14 A987 0003 740 2012/6/16 A987 0003 840 2012/6/18 A987 0003 240 2012/6/20 A987 0003 640 【テーブル2】 日付 品番 管理番号 使用数 2012/7/10 A987 0001 160 2012/7/11 A987 0001 260 2012/7/10 A987 0002 220 2012/7/12 A987 0002 320 2012/7/20 A987 0003 530 2012/7/22 A987 0003 430 2012/7/24 A987 0003 830 【テーブルJoin】 日付 品番 管理番号 数 使用数 2012/6/12 A987 0001 500 160 2012/6/14 A987 0001 300 260 2012/6/16 A987 0001 400 0 2012/6/18 A987 0001 800 0 2012/6/12 A987 0002 750 220 2012/6/12 A987 0002 0 320 2012/6/12 A987 0003 540 530 2012/6/14 A987 0003 740 430 2012/6/16 A987 0003 840 830 2012/6/18 A987 0003 240 0 2012/6/20 A987 0003 640 0
- 締切済み
- MySQL
- 2つのテーブルを結合してデータ抽出時に
2つのテーブルからデータを取得したいです。 結合し、データの取得を試みてますが、キーに対して空白の行が取得できません。どうしたらよいでしょうか?助けてください。 Aテーブル Bテーブル 1 100 A 1 みかん 2 150 B 2 りんご 4 200 D 3 すいか 5 300 E 4 なし 6 500 F 6 高級なし 上記のようなテーブルをくっつける時の話で求める値は以下なんですが… Cテーブル 1 100 A みかん 2 150 B りんご 3 すいか 4 200 D なし 5 300 E 6 500 F 高級なし どちらかがデータなしでもキー(例の場合は1とかの数字です)があるもの は表示したいです。 どなたかわかるかた教えてください。お願いします。 ちなみに使用しているのはoracleです。
- 締切済み
- SQL Server
- 結合したテーブルの特定カラムのカウントについて
PHPを学習しており、MySQLでデータベースにPDOで接続をしています。 添付画像のようなチームのデータを管理するテーブル(teamテーブル)と メンバーのデータを管理するテーブル(memberテーブル)があり、 teamテーブルのkeywordカラムを検索条件にし、 keywordカラムの値が『keyword1』と一致するteamテーブルのレコードの teamcodeカラムの値と一致する値を持つ memberテーブルのレコード数をカウントして teamテーブルから『teamcode』、『teamname』、『teamkana』、『date』を取得し、memberテーブルでの『teamcode』の該当数を取得したいです。 OUTER JOINして、NULLIFやCOALESCEなどを使用して試してみたのですが、 構文の使い方が悪いのか、そもそも使うべきSQL文が違うのかわかりませんが、 添付画像の『teamcode』の値が『0004』のもののように memberテーブルに該当する値が存在しないものは NULLになってしまい、取得ができませんでした。 できればmemberテーブルに該当する値が存在しない場合は「0」として取得したいです。 このような場合、どのようなSQL文を記述したら良いのでしょうか? 少しややこしい内容ですので、説明が不足していたり、 説明が分かりづらいようであれば補足します。 ご回答、よろしくお願いします。
- ベストアンサー
- PHP
- メインデータと最新サブデータのテーブル結合について
お世話になっております。 MySQL4.1にて以下のようなデータを取得したいと考えています。 1回のSQLで何とかとりたいと考えているのですが、 良いお知恵はないでしょうか? ▼Aテーブル ID(PK) メインメモ ▼Bテーブル ID(PK) 日付(PK) サブメモ ▼取得したい結果 ID(1) メインメモ 最新サブメモ ID(2) メインメモ 最新サブメモ ID(3) メインメモ null ・「メインメモ」と「サブメモ」は1対多の状態です。 ・IDごとに1行だけメインメモと最新のサブメモを取得したい。 ・サブメモがなくてもメインメモだけでも取れる。 (Aテーブル LEFT OUTER JOIN Bテーブルの関係) 上記の条件でデータを取得したいと考えております。 よろしくお願いいたします。
- ベストアンサー
- MySQL
- テーブル結合について
テーブルの結合についてお聞きしたいことがあります。 カラム「KEY」を結合条件に テーブルA、B、Cを結合して【取りたい結果】のようなデータを取りたいと思っています。 しかし、テーブルAにBとCをLEFT JOINを結合した所、 【取得された結果】のデータが取得されました。 どのような結合をしたら期待通りの結果が得られるのでしょうか? 回答宜しくお願いします。 【取得された結果】 key dataA dataB dataC ------------------------------------------------- 1 A-1 B-1 C-1 A-1 B-1 C-2 A-1 B-1 C-3 2 A-2 3 A-3 【取りたい結果】 key dataA dataB dataC ------------------------------------------------- 1 A-1 B-1 C-1 A-1 C-2 A-1 C-3 2 A-2 3 A-3 【テーブルA】 key dataA --------------------- 1 A-1 2 A-2 3 A-3 【テーブルB】 key dataB --------------------- 1 B-1 【テーブルC】 key dataC --------------------- 1 C-1 1 C-2 1 C-3
- 締切済み
- Oracle
- SQL Server テーブル設計で悩んでいます。
SQL Server 2008 R2 Visual Studio 2008 テーブルの設計で悩んでいます。 テーブルAのようなデータがあり、実際には、場所のNo.の数は500点くらいあります。 このデータをSQL to LINQでデータの追加、参照をしたいと思っています。 テーブルA,B、どちらの形式で設計する方がよいのでしょうか。 テーブルAの場合は、見た目がそのままで分かりやすいのですが、データ追加時(INSERT)に多数のデータを 追加する方法が分かりません。 テーブルBの場合は、テーブルAの形式で取得する場合、どうすればよいのか分かりません。 ここから先に進めず困っております。よろしくお願いします。 テーブルA 日付 No.1 No.2 No.3 No.4 No.5 2011/1/1 0 68 37 41 38 2011/1/2 3 60 3 69 46 2011/1/3 22 89 63 14 77 2011/1/4 75 8 55 46 41 2011/1/5 63 92 1 26 90 2011/1/6 61 23 77 42 93 2011/1/7 54 52 36 44 41 2011/1/8 72 98 30 66 48 2011/1/9 20 3 89 15 59 テーブルB 日付 場所 線量 2011/1/1 No.1 0 2011/1/1 No.2 68 2011/1/1 No.3 37 2011/1/1 No.4 41 2011/1/1 No.5 38 2011/1/2 No.1 3 2011/1/2 No.2 60 2011/1/2 No.3 3 2011/1/2 No.4 69 2011/1/2 No.5 46
- 締切済み
- SQL Server
- 二つのSQLサーバーのテーブルからビューを作成するには
わけあってAサーバーとBサーバーに同じ項目構成の、同じ名前のテーブルがあります。只入っているデータが異なってます。 Aサーバーの"H"テーブルには 3行のデータがあります。 Bサーバーの"H"テーブルには2行のデータがあります。 ちなみにリンクサーバーはセットアップしてあり、二つのサーバーの間のセキュリティは確立してあります。 以上のような場合、ビューで二つの"H"テーブルのすべての行を表示できますか? 結合ではなく、AサーバーのテーブルのデータにBサーバーのテーブルのデータを追加した感じのビューを作りたいです。 どなたか知っている方がいましたら、教えてください。
- ベストアンサー
- その他(データベース)
- Labia Gシリーズのソフトウェアが必要な場合、現在使用しているLAVIE NS150/Gで設定ソフトをダウンロードして利用する方法を知りたいです。
- PC-GL235UYARを使用していましたが、電源が入らなくなり、現在はLAVIE NS150/Gを使用しています。wirelessTVデジタルのチューナーは残っていますが、NS150/Gで利用するための設定ソフトをダウンロードすることは可能でしょうか。
- Labia Gシリーズのソフトウェアについて質問です。以前使用していたPC-GL235UYARは壊れてしまいましたが、現在はLAVIE NS150/Gを使用しています。wirelessTVデジタルのチューナーが残っていますが、NS150/Gで利用するための設定ソフトをダウンロードできるのでしょうか。有料の場合も構いません。
お礼
参考にさせて作業させてもらいます。ありがとうございます。