【发布时间】:2009-05-20 22:15:32
【问题描述】:
我有一个包含这些表的 MySQL 数据库:
sessions
--------
sessionid (INT)
[courseid (INT)]
[locationid (INT)]
[comment (TEXT)]
dates
-----
dateid (INT)
sessionid (INT)
date (DATE)
courses
-------
...
locations
---------
...
每个会话都有一个唯一的 sessionid,每个日期都有一个唯一的 dateid。但日期不一定有唯一的 sessionid,因为会话可以跨越可变数量的日期(不一定是连续的)。
选择每个完整的行只是在 sessionid 上加入表的问题。但是,我正在寻找一种方法来返回特定 courseid 的行集,其中该行集中的每一行代表一个位置,并包含另一个行集,每个行集包含单个会话,该会话又包含另一个行集,其中包含所有该会议的日期:
course
location
sesssion
date
date
session
date
date
date
location
...
这是因为我使用 Zend Framework 从 PHP 查询这个数据库,它有一个很好的接口,可以以面向对象的方式操作行和行集。
最终,我试图向视图输出一个“时间表”,首先按课程组织,然后是位置,然后是日期。理想情况下,我可以将每一行作为一个位置进行迭代,然后针对每个位置,对每个会话进行迭代,然后对每个会话,对每个日期进行迭代。
我正在考虑通过分别查询所有地点、会话和日期来做到这一点。然后,我将每个行集转换为一个数组,并将每个会话数组添加为位置数组的成员,并将每个日期数组添加为会话数组的成员。
然而,这感觉很笨拙,并且没有让我能够以面向对象的方式处理行。
我想知道是否有:
a) 用于表示此数据的更好的表模式;
b) 一个我不知道的 sql 查询;
c) Zend_Db 中允许我将行集分配给行集的方法
如果我在任何地方不清楚,请告诉我,并提前感谢。
(交叉手指说这不会出现在日常的wtf中......)
【问题讨论】:
标签: php sql mysql database zend-framework