Справочник крепёжных изделий
Примеры SQL-запросов
Поиск шпилек по d1 и длине
SELECT * FROM fasteners
WHERE type_name = 'Шпилька'
AND (params->>'d1')::numeric = 10
AND (params->>'l')::numeric = 80;
Поиск болтов в диапазоне диаметров
SELECT * FROM fasteners
WHERE type_name = 'Болт'
AND (params->>'d')::numeric BETWEEN 8 AND 16
AND (params->>'l')::numeric >= 50;
Поиск через оператор @> (containment)
SELECT * FROM fasteners
WHERE params @> '{"strength": "5.8", "tolerance": "6g"}'::jsonb;
Обновление одного поля JSONB
UPDATE fasteners
SET params = jsonb_set(params, '{mass_1000}', '42.5')
WHERE id = 1;
Агрегация по типам
SELECT type_name, COUNT(*),
MIN((params->>'d')::numeric) AS d_min,
MAX((params->>'d')::numeric) AS d_max
FROM fasteners
GROUP BY type_name;