coryd.dev/queries/views/media/music/concerts.sql

27 lines
610 B
SQL

CREATE OR REPLACE VIEW optimized_concerts AS
SELECT
c.id,
c.date,
CASE
WHEN c.artist IS NOT NULL THEN json_build_object('name', a.name_string, 'url', a.slug)
ELSE json_build_object('name', c.artist_name_string, 'url', NULL)
END AS artist,
json_build_object(
'name',
v.name,
'name_short',
trim(split_part(v.name, ',', 1)),
'latitude',
v.latitude,
'longitude',
v.longitude,
'notes',
v.notes
) AS venue,
c.notes AS concert_notes
FROM
concerts c
LEFT JOIN artists a ON c.artist = a.id
LEFT JOIN venues v ON c.venue = v.id
ORDER BY
c.date DESC;