我有这样的记录:
id | name | date 1 | aji | 2014-06-01 2 | akon | 2014-06-02 3 | dewi | 2014-06-04 4 | dani | 2014-06-05
我想显示2014-06-01 - 2014-06-06的所有日期,即使他们没有关联的记录:
id | name | date 1 | aji | 2014-06-01 2 | akon | 2014-06-02 NULL | NULL | 2014-06-03 3 | dewi | 2014-06-04 4 | dani | 2014-06-05 NULL | NULL | 2014-06-06
答案 0 :(得分:1)
可能你可以用这种方式。
SQL Server
Select IsNull(id, Null), IsNull(name,Null),date
where date Between 2014-06-01 and 2014-06-06.
如果ID已设置为int,那么请执行此操作
Select IsNull(id, 0), IsNull(name,Null),date
where date Between 2014-06-01 and 2014-06-06.
MY SQL
select id, name,date from tr_kehadiran
where date >= "2014-06-30" AND date <= "2014-07-06" AND id is Null AND name is Null
请让我知道结果。
答案 1 :(得分:1)
我不确定我理解你要求的是什么。 但是
SELECT * FROM table WHERE date BETWEEN '2014-06-01' AND '2014-06-06'
和
<?php
$start = new DateTime('2014-06-01');
$interval = new DateInterval('P1D');
$end = new DateTime('2014-06-06');
$period = new DatePeriod($start, $interval, $end);
foreach ($period as $date)
{
if (isset($results['date'][$date]))
{
// Results display
}
else
{
// NULL display
}
}
其中$ results是您的查询结果
答案 2 :(得分:0)
以下是要遵循的步骤 -
如果是SQL Server
使用CTE,根据您的要求填写所需的日期范围
左键将您的表格与日期列上的CTE联系起来,并在CTE中填充结果集中缺少的日期
如果是MySQL -
根据要求
左边连接日期列上的临时表,并从CTE填充结果集中缺少的日期