【问题标题】:Can I select a virtual table, its data and use it for other stuff with php?我可以选择一个虚拟表,它的数据并将其用于 php 的其他内容吗?
【发布时间】:2020-08-09 13:01:44
【问题描述】:

是否可以使用 JOIN 创建一个虚拟表,然后在使用 phpmyadmin 和 php 时将该虚拟表用作 SELECT FROM 的表?如果是这样,我该如何使用 php 从该表中进行 SELECTing?

编辑:

我尝试使用view myview as <your select statement> 所说的创建

但我收到一个错误:atal 错误:未捕获的错误:在 bool 上调用成员函数 fetch_assoc()

代码如下:

        $sqlEC = "create view myview as <SELECT hobio_id, hobio_pav2 FROM zmogaus_hobiai LEFT JOIN hobiai ON zmogaus_hobiai.hobio_id = hobiai.id WHERE zmogaus_hobiai.zmogaus_id =".$roww[0].">";
        $resultEC = $conn -> query($sqlEC);
        $var = mysqli_query($conn, $sqlEC);
        $rowEC = $resultEC -> fetch_assoc();
        $sqlH = "select id, hobio_pav from ".$sqlEC." where not exists (select hobio_id, hobio_pav2 from  zmogaus_hobiai where zmogaus_hobiai.hobio_id = hobiai.id and zmogaus_hobiai.hobio_pav2 = hobiai.hobio_pav);";
        $resultH = $conn -> query($sqlH);
        $rowH = $resultH -> fetch_assoc();

【问题讨论】:

  • (1) 需要去掉create view语句中select周围的&lt;&gt;。 (2) 直接针对您的数据库运行此 DDL 语句会更简单,例如使用 phpmyadmin,如果这是您正在使用的。 (3) 那你就select ... from myview where ....

标签: php mysql sql join sql-view


【解决方案1】:

您正在描述一个 SQL 视图。

这是一个由 SQL 查询定义的虚拟表,您可以像查询真实的持久表一样查询该表。数据库不物理存储视图,仅存储其定义。当查询视图时,数据库执行定义底层视图的 SQL 语句,并从底层表返回实际数据。

如果您有一个 SQL SELECT 查询,您可以使用 create view syntax 创建一个视图:

create view myview as <your select statement>

然后您可以使用常规的select 语句查询视图:

select * from myview

【讨论】:

    猜你喜欢
    • 2017-12-14
    • 2015-02-02
    • 2021-04-25
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-19
    相关资源
    最近更新 更多