diff --git a/console/db.py b/console/db.py index cda8815..cee7676 100644 --- a/console/db.py +++ b/console/db.py @@ -67,16 +67,17 @@ class Database: if brand: return self._query( """ - SELECT DISTINCT m.id, m.name + SELECT MIN(m.id) AS id, m.name FROM models m JOIN brands b ON m.brand_id = b.id WHERE UPPER(b.name) = UPPER(?) + GROUP BY UPPER(m.name) ORDER BY m.name """, (brand,), ) return self._query( - "SELECT id, name FROM models ORDER BY name" + "SELECT MIN(id) AS id, name FROM models GROUP BY UPPER(name) ORDER BY name" ) def get_years( @@ -109,8 +110,13 @@ class Database: ) -> list[dict]: """Return engines, optionally filtered by brand/model/year.""" sql = """ - SELECT DISTINCT e.id, e.name, e.displacement_cc, e.cylinders, - e.fuel_type, e.power_hp, e.torque_nm, e.engine_code + SELECT MIN(e.id) AS id, e.name, + MAX(e.displacement_cc) AS displacement_cc, + MAX(e.cylinders) AS cylinders, + MAX(e.fuel_type) AS fuel_type, + MAX(e.power_hp) AS power_hp, + MAX(e.torque_nm) AS torque_nm, + MAX(e.engine_code) AS engine_code FROM engines e JOIN model_year_engine mye ON e.id = mye.engine_id JOIN models m ON mye.model_id = m.id @@ -128,7 +134,7 @@ class Database: if year: sql += " AND y.year = ?" params.append(int(year)) - sql += " ORDER BY e.name" + sql += " GROUP BY UPPER(e.name) ORDER BY e.name" return self._query(sql, tuple(params)) def get_model_year_engine(