Código: Selecionar todos
SET @dDate := DATE( NOW() );
SET @dInicial := DATE_SUB( @dDate, INTERVAL DAY( @dDate ) - 1 DAY );
SET @dInicial := IF( WEEKDAY( @dInicial ) == 0, @dInicial, DATE_SUB( @dInicial, INTERVAL WEEKDAY( @dInicial ) + 1 DAY ) );
SET @dFinal := LAST_DAY( @dDate );
SELECT DISTINCT
IF( MONTH( A ) = MONTH( @dDate ), CONCAT( LPAD( DAY( A ), 2 ), IF( fa.horadata IS NULL, '', '*' ), '' ), '' ) AS SUN,
IF( MONTH( B ) = MONTH( @dDate ), CONCAT( DAY( B ), IF( fb.horadata IS NULL, '', '*' ), '' ), '' ) AS MON,
IF( MONTH( C ) = MONTH( @dDate ), CONCAT( DAY( C ), IF( fc.horadata IS NULL, '', '*' ), '' ), '' ) AS TUE,
IF( MONTH( D ) = MONTH( @dDate ), CONCAT( DAY( D ), IF( fd.horadata IS NULL, '', '*' ), '' ), '' ) AS WED,
IF( MONTH( E ) = MONTH( @dDate ), CONCAT( DAY( E ), IF( fe.horadata IS NULL, '', '*' ), '' ), '' ) AS THU,
IF( MONTH( F ) = MONTH( @dDate ), CONCAT( DAY( F ), IF( ff.horadata IS NULL, '', '*' ), '' ), '' ) AS FRI,
IF( MONTH( G ) = MONTH( @dDate ), CONCAT( DAY( G ), IF( fg.horadata IS NULL, '', '*' ), '' ), '' ) AS SAT
FROM
(
SELECT
DATE_ADD( @dInicial, INTERVAL X + 0 DAY ) AS A,
DATE_ADD( @dInicial, INTERVAL X + 1 DAY ) AS B,
DATE_ADD( @dInicial, INTERVAL X + 2 DAY ) AS C,
DATE_ADD( @dInicial, INTERVAL X + 3 DAY ) AS D,
DATE_ADD( @dInicial, INTERVAL X + 4 DAY ) AS E,
DATE_ADD( @dInicial, INTERVAL X + 5 DAY ) AS F,
DATE_ADD( @dInicial, INTERVAL X + 6 DAY ) AS G
FROM
(
SELECT 0 AS X
UNION ALL SELECT 7
UNION ALL SELECT 14
UNION ALL SELECT 21
UNION ALL SELECT 28
UNION ALL SELECT 35
) AS X
) AS Y
LEFT JOIN jptabhorario AS fa ON fa.horadata = a
LEFT JOIN jptabhorario AS fb ON fb.horadata = b
LEFT JOIN jptabhorario AS fc ON fc.horadata = c
LEFT JOIN jptabhorario AS fd ON fd.horadata = d
LEFT JOIN jptabhorario AS fe ON fe.horadata = e
LEFT JOIN jptabhorario AS ff ON ff.horadata = f
LEFT JOIN jptabhorario AS fg ON fg.horadata = g
WHERE A <= @dFinal
ORDER BY sun