2017-11-28 8 views
-3

私は2つのテーブル:posts(id,title,text,type)images(id, post_id, url)を持っています。mysqlビューを作成します。

すべての投稿からビューを作成したいところです。posts.type=1posts.id = image.post_idです。それは本当ですか?

私は試してみてください。

CREATE VIEW image_posts AS 
      SELECT * 
       FROM posts id 
       INNER JOIN images post_id ON post_id = id; 

私が取得:

Error in query (1052): Column 'id' in on clause is ambiguous 
+0

あなたが投稿FROM – Zeljka

+0

は 'id'私達にあなたのクエリを記述するdidntの - あなたが実際にこれが何であるかを認識していますか...? – CBroe

+2

あなたはテーブルの別名を誤解しています。 'posts id'を書くことで、' posts'テーブルにエイリアスを設定しています。クエリのどこかで 'id'を参照すると、いつでも' posts'テーブルを意味すると言います。 2つのテーブルが同じフィールド名を持つ場合は、テーブルとフィールド名を修飾する必要があります。修飾フィールドリファレンスは 'posts.id'のようなものです。あなたのケースでは、あなたが設定したエイリアスのため、修飾されたフィールド名は 'id.id'です。 –

答えて

1

はい、それは可能です。ビューを作成するには、ビューに結果を表示するクエリを記述し、その前にCREATE VIEW <name> ASを追加する必要があります。

CREATE VIEW mymegaview AS 
SELECT posts.id, posts.title,posts.text, posts.type, image.id as image_id, 
    image.post_id, image.url 
FROM `posts` LEFT JOIN `image` 
    ON posts.id = image.post_id AND posts.type=1 
+0

また、そのビューでは、1つの投稿に複数の画像がある場合、同じIDを持つ複数の投稿があることに注意してください。 –

0
CREATE VIEW image_posts AS 
SELECT posts.id, posts.title, posts.text, posts.type, images.id as imgid,images.images 
FROM posts posts INNER JOIN images images ON images.post_id = posts.id 
AND posts.type=1; 

でVIEWの構文をCREATE参照してください:https://dev.mysql.com/doc/refman/5.7/en/create-view.html

関連する問題