Archived
4
2

Using even more complex CTE query for testing

This commit is contained in:
Dave Morriss 2023-10-16 23:01:30 +01:00
parent 3ccd6101ee
commit dab80f1772

View File

@ -1,29 +1,31 @@
<!--% query_next_available_episode = ' <!--% query_next_available_episode = '
WITH next_id AS ( WITH RECURSIVE
SELECT id, id + 1 AS id_next, date as last_date min_id AS (
FROM eps SELECT max(id) AS start_id FROM eps WHERE date <= date(\'now\')
WHERE eps.date > date(\'now\')
), ),
free_slot AS ( max_id AS (
SELECT max(id) AS end_id FROM eps
),
cnt(x) AS (
SELECT start_id from min_id
UNION ALL
SELECT x+1 FROM cnt
WHERE x+1 <= (SELECT end_id FROM max_id)
),
first_empty AS (
SELECT SELECT
last_date AS prev_date, cnt.x AS id
CASE FROM cnt
WHEN strftime(\'%w\',last_date) = \'5\' LEFT JOIN eps e ON cnt.x = e.id
THEN \'+3 days\' WHERE e.id IS NULL
ELSE \'+1 days\'
END AS date_offset,
next_id.id_next AS empty_slot
FROM next_id
LEFT JOIN eps ON next_id.id_next = eps.id
WHERE eps.id IS NULL
ORDER BY next_id.id
LIMIT 1
) )
SELECT SELECT
empty_slot AS next_id, fe.id as empty_slot,
DATE (prev_date, date_offset) AS next_date, (SELECT date(eps.date,\'+1 day\') from eps where id = fe.id-1) as slot_date,
printf(\'%i\',abs(julianday(DATE (prev_date, date_offset)) - julianday(\'now\') + 1)) AS delta_days printf(\'%i\',abs(julianday((SELECT date(eps.date,\'+1 day\') from eps where id = fe.id-1)) - julianday(\'now\') + 1)) AS delta_days
FROM free_slot FROM first_empty AS fe
LEFT JOIN eps e ON fe.id = e.id
LIMIT 1
' '
%--> %-->
<!--% query_latest_episodes = ' <!--% query_latest_episodes = '