0

我目前正在使用三个不同的查询从数据库中输出信息。我在下面放了一个我正在做的事情的示例,我只是好奇是否有更有效的更简单的方法来吐出相同的信息。

我有一个事件数据库表,它有一个日期字段和父事件字段。我必须按日期对事件进行分组,在每个日期吐出事件,然后在这些事件下吐出每个子事件(通过使用父事件字段)。

下面是我的代码布局的示例,如果有更简单的查询等,我在 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>
4

1 回答 1

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
于 2013-04-28T21:02:58.760 回答