我有一个数据库,为我的城镇举办现场乐队演出,每个演出都存储在我的MySQL数据库中。
我想在白天分组,看看我网站上的演出。但GROUP BY功能只显示1条记录。如何在一个日期之前显示所有演出?
我的MySQL结构..
ID date content
1 2012-12-02 00:00:00 Gig 1
2 2012-12-02 00:00:00 Gig 2
1 2012-12-03 00:00:00 Gig 1
2 2012-12-03 00:00:00 Gig 2
我想像这样展示..
-- Sun 02 December 2012 --
Gig 1
Gig 2
-- Mon 03 December 2012 --
Gig 1
Gig 2
答案 0 :(得分:0)
试试这个
SELECT *
FROM your_table
WHERE date = '".$your_variable_of_selectedDate."'
GROUP BY date
ORDER BY date
编辑: 如果你没有日期变量,那么只需给出一个特定的日期
SELECT date , content
FROM your_table
GROUP BY date
ORDER BY date
答案 1 :(得分:0)
不要将结果分组到数据库层,在表示层中执行。例如,使用PDO:
$dbh = new PDO("mysql:dbname=$dbname", $username, $password);
$qry = $dbh->query('
SELECT UNIX_TIMESTAMP(date), content
FROM gigs
WHERE date > NOW()
ORDER BY date
');
if ($qry->execute()) {
// output headers
echo '<h1>Upcoming gigs</h1>';
$row = $qry->fetch();
while ($row) {
$current_date = $row['date'];
// output $current_date initialisation
echo '<h2>', date('D d F Y', $current_date), '</h2><ul>';
do {
// output $row details
echo '<li>', htmlentities($row['content']), '</li>';
} while ($row = $qry->fetch() and $row['date'] == $current_date);
// output $current_date termination
echo '</ul>';
}
// output footers
}