0
날짜 간격을 기준으로 N 개의 행을 반환하는 쿼리를 만들어야합니다. 그것은 간단하지만 난 할 수 없습니다 :/MySQL은 날짜 간격에 따라 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
실제 쿼리 : 내가 그리드를 구축 할의 iReport에이 결과를 사용합니다 2012년 10월 30일
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일 종료 날짜 = 이 날짜의 차이에 따라 행 수가 달라집니다. 구글에 설립
예 검색 : 나는이에 대한 해결책을 발견했습니다
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
;
, 당신은 두 가지 특정 날짜 사이 뜻 그래서 나는이 있나요? 원하는 결과 집합은 무엇입니까? 당신의 이상적인 산출물의 예를 추가하십시오. – Ray
테이블 구조를 보여주세요 – Justin
실제로 두 날짜 사이에 레코드를 찾을 때'f.id_foo = 14'의 의미는 무엇입니까? 아니면 그 하나의 id 값에 대한 많은 레코드가 있습니까? – nawfal