Если у тебя структура построена по принципу EAV, то это ещё мало. Там, во многих случаях, каждый дополнительный критерий для поиска добавляет один join, и этого избежать никак нельзя.
приходилось править как-то sql'ники на несколько тысяч строк. Такой запрос легче написать заново, чем распарсить.
В 1С такое сплошь и рядом. Типа «рассчитать НДФЛ по предприятию в разрезе сотрудников, нарастающим итогом с начала года, с учётом вычетов и ограничений на эти вычеты» — 1000 строк, 55 join'ов. Или ведомость по амортизации ОС — 1609 строк.
Пользуясь случаев, спрошу: может кто-то видел аналог для написания SQL запросов? А то каждый раз страдаю, как что-то сложнее пяти строк набирать приходится :-(
Какое? Желательно для postgreSQL. Искал — всюду убожество в стиле MS SQL, где больше десятка таблиц в одном запросе нереально использовать (особенно если соединения нетривиальные).
Learn SQL
Так я его знаю. Просто набросать полями и проставить соединения (особенно если FOREIGN KEY автоматом предлагается) на порядок быстрее, чем написать вручную (даже с учётом копипаста).
а он разве не почти-SQL строит ? то есть его результат и есть практически SQL если помнить про 1С-ные прибамбасы (типа регистров, если память не изменяет)..
кстати вотзря 1C ругают, реально ХОРОШАЯ система - выпусти они систему под свободной лицензией хотя бы на ядро (даже не на конфигурации) в миг положили бы всякие GNU-недо-cash и отъели не менее половины web-магазинов на свою платформу
Именно его и строит (с точностью до перевода ключевых слов на русский). И, самое главное, не только строит, но и разбирает любой корректный запрос. Потому и спрашиваю, есть ли такое для PostgreSQL.
Кстати в SQL от 1C есть ещё пара удобных штук
1. Неявные соединения через точку:
CREATE TABLE t1 (id INT PRIMARY KEY, str VARCHAR(10) str);
CREATE TABLE t2 (id INT PRIMARY KEY, t1_ref INT REFERENCES t1, str2 VARCHAR(10))
SELECT t1_ref.str, str2 FROM t2
2. Итоги. В конце пишешь «TOTALS SUM(f1), MAX(f2) BY gr1, gr2» и получаешь подитоги колонок f1 и f2 по группировкам gr1 и gr2.
Есть, например, платный DbVisualizer, с бесплатной ограниченной по функциональности версией. Но конкретно конструктор запросов я там никогда не использовал, не знаю на что он способен.