日付間隔に基づいて N 行を返すクエリを作成する必要があります。それは簡単ですが、私はできません:/
基本クエリ:
SELECT
f.many_fields
FROM
tb_foo f
WHERE
f.id_foo = 14
このクエリは、私の ID に基づいて 1 行を返します。しかし、このクエリに適用するために「2012-10-10」の「2012-10-30」のような日付間隔があり、最後に基本クエリは日付間隔の差分に基づいて 20 行を返します。
これを作ることは可能ですか?
SELECT
f.many_fields,
bar.*
FROM
tb_foo f,
(SELECT x FROM dual limit DATEDIFF('2012-10-10','2012-10-30')) bar
WHERE
f.id_foo = 14
実際のクエリ:
SELECT
m.id_matricula,
a.nome
FROM
tb_matricula m
inner join tb_aluno a on (a.id_aluno = m.id_matricula)
WHERE
m.id_matricula = 14
開始日 = 2012-10-10 終了日 = 2012-10-30
この結果を iReport で使用して、この日付の差に基づいた行数のグリッドを作成します。
Google 検索に基づく例:
SELECT
CONCAT( dt.d ,'-' ,days.d ) AS dates
FROM
(
SELECT
CONCAT( a1 ,b1 ) AS d
FROM
(
SELECT
'0' AS a1
UNION ALL SELECT
'1'
UNION ALL SELECT
'2'
UNION ALL SELECT
'3'
) a JOIN(
SELECT
'0' AS b1
UNION ALL SELECT
'1'
UNION ALL SELECT
'2'
UNION ALL SELECT
'3'
UNION ALL SELECT
'4'
UNION ALL SELECT
'5'
UNION ALL SELECT
'6'
UNION ALL SELECT
'7'
UNION ALL SELECT
'8'
UNION ALL SELECT
'9'
) b
WHERE
CONVERT(
CONCAT( a1 ,b1 ) ,
UNSIGNED
) <=(
SELECT
DAY(
CONCAT( '2012-10' ,'-01' ) + INTERVAL 1 MONTH - INTERVAL 1 DAY
)
)
AND CONCAT( a1 ,b1 ) <> '00'
) days JOIN(
SELECT
'2012-10' AS d
) dt
HAVING
dates BETWEEN '2012-10-02' AND '2012-10-05'
ORDER BY
dates
;