我目前正在使用三个不同的查询来输出数据库中的信息。我已经在下面对我正在做的事情进行了一些示例,我只是好奇是否有一种更有效的简单方法来解决这个问题。资讯
我有一个事件的数据库表,它有一个日期字段和父事件字段。我必须按事件日期对事件进行分组,每个日期吐出事件,然后在这些事件下面吐出每个子事件(通过使用父事件字段)。
下面是我的代码如何布局的示例,如果有更简单的查询等,我在mysql中的表现不是很好。
由于
$result = mysql_query("SELECT * FROM events GROUP BY date");
while ($event_date = mysql_fetch_assoc($result)) {
echo 'Date Header';
$result2 = mysql_query("SELECT * FROM events WHERE date = '" . $event_date['date'] . "' && parent_id = ''");
while ($event = mysql_fetch_assoc($result2)) {
echo 'Event display code';
$result3 = mysql_query("SELECT * FROM events WHERE date = '" . $event_date['date'] . "' && parent_id = '" . $event['id'] . "'");
while ($event = mysql_fetch_assoc($result3)) {
echo 'Sub Event code';
}
}
}
获得如下所示的标记。
<h3>Date 1</h3>
<div class="top-level-event">
Some code
</div>
<div class="sub-level-event">
some sub level code
</div>
<div class="sub-level-event">
some sub level code
</div>
<h3>Date 2</h3>
<div class="top-level-event">
Some code
</div>
<div class="sub-level-event">
some sub level code
</div>
<div class="sub-level-event">
some sub level code
</div>
答案 0 :(得分:1)
您可以使用一个查询:
SELECT * FROM events e1
LEFT JOIN events e2 ON e1.id=e2.parent_id AND e1.date=e2.date
WHERE e1.parent_id=''
ORDER BY e1.date