Как сделать предложение where при сравнении двух полей в SqlKorma (clojure)
Я использую Postgresql и sqlkorma 0.4.
CREATE TABLE mytable (id serial PRIMARY KEY,
a integer NOT NULL, b integer NOT NULL);
Как сделать:
SELECT * FROM mytable WHERE a > b
я пробовал
(defentity mytable
(pk :id)
(table :mytable))
а также
(select table mytable
(fields :a :b)
(where (> a b)))
но это не работает
2 ответа
Решение
(sql-only
(select my-table (where {:a [> :b]})))
;; => "SELECT `my-table`.* FROM `my-table` WHERE (`my-table`.`a` > `my-table`.`b`)"
Я не уверен, если это правильный ответ, но я предлагаю посмотреть на Yesql:
https://github.com/krisajenkins/yesql
В большинстве случаев вам не нужен DSL, чтобы просто повторить то, что SQL уже сделал.
Я сам много работал с Korma и тратил слишком много времени на простую конвертацию SQL в синтаксис Korma, как этот.