BrickTracker/bricktracker/sql/set/base/select.sql

53 lines
1.4 KiB
SQL

SELECT
"sets"."set_num",
"sets"."name",
"sets"."year",
"sets"."theme_id",
"sets"."num_parts",
"sets"."set_img_url",
"sets"."set_url",
"sets"."last_modified_dt",
"sets"."mini_col",
"sets"."set_check",
"sets"."set_col",
"sets"."u_id",
{% block number %}
CAST(SUBSTR("sets"."set_num", 1, INSTR("sets"."set_num", '-') - 1) AS INTEGER) AS "set_number",
CAST(SUBSTR("sets"."set_num", 1, INSTR("sets"."set_num", '-') + 1) AS INTEGER) AS "set_version",
{% endblock %}
IFNULL("missing_join"."total", 0) AS "total_missing",
IFNULL("minifigures_join"."total", 0) AS "total_minifigures"
FROM sets
-- LEFT JOIN + SELECT to avoid messing the total
LEFT JOIN (
SELECT
"missing"."u_id",
SUM("missing"."quantity") AS "total"
FROM "missing"
{% block where_missing %}{% endblock %}
GROUP BY "u_id"
) "missing_join"
ON "sets"."u_id" IS NOT DISTINCT FROM "missing_join"."u_id"
-- LEFT JOIN + SELECT to avoid messing the total
LEFT JOIN (
SELECT
"minifigures"."u_id",
SUM("minifigures"."quantity") AS "total"
FROM "minifigures"
{% block where_minifigures %}{% endblock %}
GROUP BY "u_id"
) "minifigures_join"
ON "sets"."u_id" IS NOT DISTINCT FROM "minifigures_join"."u_id"
{% block where %}{% endblock %}
{% if order %}
ORDER BY {{ order }}
{% endif %}
{% if limit %}
LIMIT {{ limit }}
{% endif %}