27 lines
610 B
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;
|