php - 每行返回多行(在 Zend Framework 中)

标签 php sql mysql database zend-framework

我有一个包含这些表的 MySQL 数据库:

sessions
--------
sessionid (INT)
[courseid (INT)]
[locationid (INT)]
[comment (TEXT)]

dates
-----
dateid (INT)
sessionid (INT)
date (DATE)

courses
-------
...

locations
---------
...

每个 session 都有一个唯一的sessionid,每个日期都有一个唯一的dateid。但日期不一定具有唯一的 sessionid,因为 session 可以跨越可变数量的日期(不一定是连续的)。

选择每个完整的行只是在 sessionid 上连接表的问题。但是,我正在寻找一种方法来返回特定 courseid 的行集,其中该行集中的每一行代表一个位置,并且包含另一个行集,每个包含单个 session ,而该 session 又包含另一个行集,其中包含所有的该 session 的日期:

course
    location
        sesssion
            date
            date
        session
            date
            date
            date
    location
        ...

这是因为我使用 Zend Framework 从 PHP 查询这个数据库,它有一个很好的接口(interface),可以以面向对象的方式操作行和行集。

最终,我试图向 View 输出一个“时间表”,首先按类(class)组织,然后是位置,然后是日期。理想情况下,我能够将每一行作为一个位置进行迭代,然后针对每个位置,迭代每个 session ,然后针对每个 session ,迭代每个日期。

我正在考虑通过分别查询所有位置、 session 和日期来实现这一点。然后,我会将每个行集转换成一个数组,并将每个 session 数组添加为位置数组的成员,并将每个日期数组添加为 session 数组的成员。

然而,这感觉非常笨拙,并且没有为我提供以面向对象的方式处理行的能力。

我想知道是否有:

a) 用于表示此数据的更好的表架构;

b) 我不知道的 sql 查询;

c) Zend_Db 中的一个方法,它允许我将一个行集分配给一个行集

如果我哪里不清楚,请告诉我,在此先感谢。

(祈祷这不会出现在每日 wtf 中...)

最佳答案

当我必须处理来自多个表的数据时,我在使用 Zend Frameworks 数据库抽象类时遇到了很多问题。运行的查询数量和生成的所有对象的开销使我的托管服务器崩溃。从那以后,我又回到编写查询来收集我所有的数据,然后遍历数据来构建我的显示。它不像使用抽象层那样漂亮或面向对象,但它也不会使我的 PHP 脚本页面到磁盘只是为了显示一个充满数据的表。

正如 Steve 提到的,无论您最终采用何种解决方案,我都会对您的内存使用情况进行分析。

关于php - 每行返回多行(在 Zend Framework 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/890529/

相关文章:

jquery - 当我使用PDO删除mysql数据库中的路径时如何删除图像

php - Android 如何从数组创建一个 json 并发送到 php 服务器

SQL 空值内连接

php - 如何制作表单更新页面来更新数据库表记录,但同时包含多个记录?

sql - Like 查询不返回预期结果

mysql - 使用 IN 运算符的 SQL 查询

mysql - Java Mysql 按价格排序

PHP:如何使用通配符搜索文件

php - 使用 php 以读取模式访问 sqlite 数据库的最佳方法

javascript - 如何将本地/服务器目录中的所有图像添加到数组并在另一个文件上使用数组 var?