質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

1回答

1200閲覧

2つのSQLの結果を結合して、viewで表示したいです。

yuki0123

総合スコア6

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/02/13 11:00

編集2020/02/16 07:56

2つのSQLの結果を結合して、viewで表示したいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Orlofsky

2020/02/13 11:58

>3つのテーブルをjoinなどして連結させるとversionに対してcount関数が使えないので どういう結果を想定していますか? テーブル定義をCREATE TABLEで、テーブルに存在するデータをINSERTで、希望する出力結果を提示しては?
Orlofsky

2020/02/13 11:59

同じSQLでもデータベースやそのバージョンによって方言が大きいですから、どのデータベースを使うのかを質問のタグで示したり、バージョンも明記した方が適切なコメントが付き易いです。
yuki0123

2020/02/13 12:42 編集

想定している結果 各companyに対して紐ずいているmemberのversionカラムに値が入っている個数を表示すること。 下の例だと2(comany.id = 1のmemberでversionに値があるのは1,3の二人なので) テーブル定義 CREATE TABLE companies( id INT(11) AUTO_INCREMENT NOT NULL, master_member_id INT(11), name VARCHAR(30) NOT NULL , address VARCHAR(30) NOT NULL, PRIMARY KEY (id)); CREATE TABLE members( id INT(11) AUTO_INCREMENT NOT NULL, company_id INT(11) NOT NULL , name VARCHAR(30) NOT NULL, email VARCHAR(30) NOT NULL PRIMARY KEY (id)); CREATE TABLE member_details( member_id INT(11) AUTO_INCREMENT NOT NULL, version INT(11) NOT NULL , PRIMARY KEY (id)); テーブルに存在するデータ insert into companies (id, master_member_id, name, address) values (1, 1,'google', tokyo); insert into members (id, company_id, name, email) values (1, 1, 'yuki', test@test.com); insert into members (id, company_id, name, email) values (2, 1, 'aki', test2@test.com); insert into members (id, company_id, name, email) values (3, 1, 'koko', test3@test.com); insert into member_details (member_id, version) values (1, 3.5); insert into member_details (member_id, version) values (2, nil); insert into member_details (member_id, version) values (3, 3.5); データベース:mysql バージョン: 5.7.27
yuki0123

2020/02/13 12:17

アドバイスありがとうございます! テーブル構造、データなどは上記のような状態です。
Orlofsky

2020/02/13 12:44

ここを読んでくれる人は少ないので質問を修正してください。
Orlofsky

2020/02/13 14:17

SQLでは文字列はシングルクォートで囲まなければなりません。 values の中の tokyo や メルアドはシングルクォートで囲んでください。
Orlofsky

2020/02/13 14:19

>最終的にcompanyに紐ずいているmemberのversionに値が入ってる個数を表示したいので、joinすると作成したオブジェクトに対して、version.countが使えないです。 こういう結果が欲しいという内容も質問のinsertの下で良いから追加してください。
guest

回答1

0

・compnies(id, name, address) -- companies の方が良いかも? ・member_details(member_name, version) ↓ ・member_details(member_id, version) として SELECT CO.id , CO.name , CO.address , MM.company_name , MM.name as XXXXX -- 列名がダブるので別名に , MM.email , MD.version FROM compnies CO INNER JOIN members MM -- ※ ON CO.id = MM.id INNER JOIN member_details MD ON MM.id = MD.member_id -- ※ ;

※ データの存在によってはOUTER JOIN (LEFT OUTER JOIN) もありうる

投稿2020/02/13 11:36

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuki0123

2020/02/13 11:57

versionの値は上記で引っ張って来れるのですが、最終的にcompanyに紐ずいているmemberのversionに値が入ってる個数を表示したいので、joinすると作成したオブジェクトに対して、version.countが使えないです。。 先に書いておくべきでした。。すみません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問