diff options
Diffstat (limited to 'src/clojure_sql/dsl.clj')
-rw-r--r-- | src/clojure_sql/dsl.clj | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/clojure_sql/dsl.clj b/src/clojure_sql/dsl.clj index 015dfda..16bc2e5 100644 --- a/src/clojure_sql/dsl.clj +++ b/src/clojure_sql/dsl.clj @@ -370,19 +370,21 @@ (apply = (map (comp set keys :fields) queries)))) (defn union - "Combine the results of two queries" + "Combine the results of two queries. + + Will always introduce a subquery." [& queries] {:pre [(apply union-compatible? queries)]} - (assoc (q/->Query) - :set-operation :union - :queries queries - :fields (zipmap (keys (:fields (first queries))) (repeat nil)))) + (convert-to-subquery (q/map->Query {:set-operation :union + :queries queries + :fields (zipmap (keys (:fields (first queries))) (repeat nil))}))) (defn intersection - "Take the common rows in two queries" + "Take the common rows in two queries. + + Will always introduce a subquery." [& queries] {:pre [(apply union-compatible? queries)]} - (assoc (q/->Query) - :set-operation :intersect - :queries queries - :fields (zipmap (keys (:fields (first queries))) (repeat nil)))) + (convert-to-subquery (q/map->Query {:set-operation :intersect + :queries queries + :fields (zipmap (keys (:fields (first queries))) (repeat nil))}))) |