【问题标题】:Nested Views issue in mysql [duplicate]mysql中的嵌套视图问题[重复]
【发布时间】:2017-04-03 11:16:09
【问题描述】:
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;

上面的查询给出了错误:

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

我们如何在一个查询中为上述查询编写嵌套视图? 请帮忙。提前致谢。

【问题讨论】:

  • 你来这里之前有没有尝试过研究错误?
  • 我已经尝试了所有可能的方法......在这里发布以寻求帮助是我能做的最后一件事。请帮忙。
  • 奇怪,当我突出显示您的错误时,右键单击并选择“在 google 上搜索” - 我得到了许多解决方案的结果。是不是很奇怪。
  • 所有这些响应都告诉我单独创建一个视图并在主查询中使用该视图。但是,我希望它在单个查询中嵌套所有视图 r 以及之后的输出。
  • 我已经发布了一个答案希望你很清楚

标签: mysql sql views


【解决方案1】:

您不能在创建视图中使用子查询,但您可以通过这种方式使用其他视图

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
;

【讨论】:

    猜你喜欢
    • 2012-01-11
    • 2021-02-05
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多