2017-11-28 1 views
-3

Ich habe zwei Tabelle: posts(id,title,text,type) und images(id, post_id, url).Erstellen mysql anzeigen wo

Ich möchte Ansicht von allen Pfosten wo posts.type=1 und posts.id = image.post_id erstellen. Es ist wirklich?

Wenn ich versuche:

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

ich:

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

Sie didnt schreiben Sie uns Ihre Anfrage – Zeljka

+0

'FROM Beiträge id' - sind Sie eigentlich wissen, was das ist ...? – CBroe

+2

Sie missverstehen Tabellen Aliase. Indem Sie 'posts id' schreiben, erstellen Sie einen Alias ​​für die' posts'-Tabelle und sagen, dass Sie, wenn Sie an einer anderen Stelle in der Abfrage auf 'id' verweisen, die 'posts'-Tabelle meinen. Wenn zwei Tabellen denselben Feldnamen haben, müssen Sie sowohl die Tabelle als auch den Feldnamen qualifizieren. Eine qualifizierte Feldreferenz ist etwa so: 'posts.id'. In Ihrem Fall lautet der Name des qualifizierten Felds "id.id" aufgrund des von Ihnen eingerichteten Alias. –

Antwort

1

Ja, es ist möglich. Um eine Ansicht zu erstellen, müssen Sie die Abfrage schreiben, für die die Ansicht das Ergebnis anzeigen soll, und dann einfach CREATE VIEW <name> AS davor einfügen.

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

Beachten Sie auch, dass Sie in dieser Ansicht mehrere Beiträge mit denselben IDs haben, wenn ein Beitrag mehrere Bilder enthält. –