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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

4回答

3058閲覧

SQLが実行できません。INNER JOIN(SELECT

rainbowsix

総合スコア102

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2017/06/02 05:20

編集2017/06/02 05:21

下記のようなSQLを書きました。
cccが認識できないような。。

MySQL

1SELECT 2 COUNT(id) 3FROM 4 ( 5 SELECT 6 aaa.id 7 FROM 8 aaa 9 INNER JOIN 10 (SELECT bbb.id FROM bbb) AS ccc 11 ON aaa.id = ccc.id 12 WHERE 13 ccc.xxx IN (1, 2, 3, 4) 14 GROUP BY 15 id 16 ) AS T

初心者ですのでどこが悪いかわかりません。
力を貸してくださし。

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

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

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

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

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

guest

回答4

0

コードは簡潔に書けるように心掛けると以下のようになるかと。

SQL

1SELECT COUNT(aaa.id) AS cnt 2FROM aaa 3INNER JOIN bbb 4ON aaa.id = bbb.id 5WHERE bbb.xxx IN (1, 2, 3, 4)

投稿2017/06/02 06:31

Orlofsky

総合スコア16415

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

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

rainbowsix

2017/06/02 07:00

ソースには書いてないですが INNER JOINにWHEREを入れないといけなかったので今後は丁寧にソースを書くようにします。
Orlofsky

2017/06/02 08:07

最近のハードウェアは性能が高くなったので、データ量が少なければ雑なコードでも処理時間はさほどかかりませんが、ひとつのテーブルだけでも何億件以上のデータを扱うDWHなどはシビアなパフォーマンス・チューニングが必要です。 質問のSQLが数百万件以上のデータを扱っているなら、わたしが書いたSQLと処理時間を比べて見ては?
guest

0

ちらっと見ただけですけど、サブクエリの中でaaa.idしかSELECTしていないのに、
WHERE句の中で、ccc.xxx列を参照しようとしています。

間違い探しみたいですね。
もう少し意味のある名前を付けていただけると分かりやすいです。

投稿2017/06/02 05:27

shi_ue

総合スコア4437

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

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

rainbowsix

2017/06/02 06:05 編集

おっしゃる通りです!次からは気を付けます。いつもお世話になります!ありがとうございます。
guest

0

group by aaa.id
とかじゃないですか?

投稿2017/06/02 05:29

koizumi

総合スコア230

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

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

0

ベストアンサー

(SELECT bbb.id FROM bbb) AS ccc としている以上、cccのテーブルにはid列しかないので、ccc.xxxがなくて失敗しているものと思われます。

(SELECT id, xxx FROM bbb) AS ccc のように必要な列を取ってきましょう(素直にbbbをそのままJOINしてもいい気もしますが)。

投稿2017/06/02 05:27

maisumakun

総合スコア145183

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

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

rainbowsix

2017/06/02 05:44

おお!!ありがとうございます! *の出番ですね!
rainbowsix

2017/06/02 05:46

実は bbbがものすごく重くて WHEREでbbbを絞るつもりでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問