2016-11-19 2 views
0
CREATE or REPLACE VIEW myView AS 
SELECT t2.film_id, t2.no_actors AS n_actor, COALESCE(t1.no_copies,0) AS n_inventory FROM 
(SELECT film_id, count(film_id) AS no_copies FROM inventory GROUP BY film_id) AS t1 RIGHT OUTER JOIN 
(SELECT film_id, count(actor_id) 
AS no_actors FROM film_actor GROUP BY film_id) AS t2 
ON t2.film_id=t1.film_id; 

Die obige Abfrage gibt den Fehler:Nested Ansichten Problem in mysql

ERROR 1349 (HY000): View's SELECT contains a subquery in the FROM clause 

Wie wir verschachtelte Ansichten für die obige Abfrage in einer einzigen Abfrage schreiben? Bitte helfen. Danke im Voraus.

+0

Haben Sie selbst versuchen, verwenden, um die Fehler zu erforschen, bevor Sie hierher kommen? –

+0

Ich habe alle möglichen Wege ausprobiert ... es hier zu posten ist das letzte, was ich tun kann. Bitte helfen Sie. –

+0

Odd, wenn ich Ihren Fehler markieren, klicken Sie mit der rechten Maustaste und wählen Sie "Suche bei Google" - ich bekomme zahlreiche Ergebnisse, die Lösungen sind. Ist das nicht besonders? –

Antwort

0

Sie können keine Unterabfrage in create view verwenden, aber Sie können andere Ansichten auf diese Weise

CREATE or REPLACE VIEW myViewSub1 AS 
SELECT film_id, count(film_id) AS no_copies FROM inventory GROUP BY film_id 
; 


CREATE or REPLACE VIEW myViewSub2 AS 
SELECT film_id, count(actor_id) 
AS no_actors FROM film_actor GROUP BY film_id 
; 

CREATE or REPLACE VIEW myView AS 
SELECT t2.film_id, t2.no_actors AS n_actor, COALESCE(t1.no_copies,0) AS n_inventory 
FROM myViewSub1 AS t1 
RIGHT OUTER JOIN myViewSub2 AS t2 
ON t2.film_id=t1.film_id 
;