こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

viewでfrom句にサブクエリが書けない

こんにちは。MYSQLのVIEWの代替についてお教え下さい。

下記でinner joinについて教えて頂きました。
http://okwave.jp/qa/q7296711.html

環境はWin 7 MYQL5です。

t1テーブルのデータ
ID,在庫
001,22

t2テーブルのデータ
ID,出庫
001,17
001,3

SELECT A.z AS `在庫`,B.*
FROM (SELECT SUM(stock) AS z
FROM t1 WHERE id='001'
GROUP BY id) A
INNER JOIN t2 B ON A.id=B.id

というコードで、それぞれのテーブルをグループ化してグループ化したもの同士をJOINしました。
このコードを元にVIEWを作り、そのVIEWを対象にクエリを作ろうと考えていました。

しかしながら、MYSQLのVIEWではFROM句でサブクエリは使えませんでした。
http://www.klab.jp/media/mysql/index4.html

上記のコードを書きなおして、なんとしてもVIEWで利用したいのですが、FROM句でサブクエリを使わずにVIEWを作成する方法がわかりません。
どのようにリライトすればよいか、ご助言お願い致します。

投稿日時 - 2012-02-10 17:20:01

QNo.7297215

困ってます

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

サブクエリはSELECT内では使えるはずですので
SELECT (SELECT SUM(在庫)
FROM T1 A WHERE A.ID=B.ID
GROUP BY ID)AS `在庫`
,B.*
FROM T2 B
としてこれをVIEW化すれば可能と思います。

投稿日時 - 2012-02-10 19:25:17

お礼

ご回答ありがとうございます!!問題なく出来ました。感謝感謝です。勉強になりました!

投稿日時 - 2012-02-13 09:56:16

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

CREATE VIEW t1_view AS
SELECT SUM(stock) AS z
FROM t1 WHERE id='001'
GROUP BY id;

SELECT A.z AS `在庫`, B.*
FROM t1_view A INNER JOIN t2 B ON A.id=B.id;

投稿日時 - 2012-02-10 17:45:49

お礼

ご回答ありがとうございます。VIEWを2つ作って、一つはT1テーブルをグループ化したVIEW。もう一つはT2テーブルをグループ化したVIEWを作るとうことでしょうか?確かにそうすればできそうです。といったご回答でしょうか?勉強不足でお恥ずかしいです。ご回答ありがとうございます。

投稿日時 - 2012-02-10 17:57:57

あなたにオススメの質問