Справочник крепёжных изделий


Примеры 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;