LauJensen / clojureql

ClojureQL is superior SQL integration for Clojure
https://clojureql.sabrecms.com
Eclipse Public License 1.0
285 stars 39 forks source link

join - aggregate - join bleeds out join from subselect #114

Open bendlas opened 12 years ago

bendlas commented 12 years ago

Join two tables, aggregate over the join, join onto another table:

(join (table :workgroups)
      (-> (table :employees)
          (join (table :salaries) :emp_id)
          (aggregate [:avg/salaries.salary] [:workgroup_id]))
      :workgroup_id)

Expected: Something like

SELECT workgroups.*,employees_subselect.workgroup_id 
  FROM workgroups 
  JOIN (SELECT employees.workgroup_id,avg(salaries.salary) 
          FROM employees 
          JOIN salaries USING(emp_id) 
         GROUP BY employees.workgroup_id) AS employees_subselect
 USING (workgroup_id)

Actual: The inner join bleeds out of the subselect, also a field is double - selected:

SELECT workgroups.*,employees_subselect.workgroup_id,employees_subselect.workgroup_id
  FROM workgroups 
  JOIN (SELECT employees.workgroup_id,avg(salaries.salary) 
          FROM employees 
          JOIN salaries USING(emp_id) 
         GROUP BY employees.workgroup_id) AS employees_subselect
 USING (workgroup_id) 
  JOIN salaries USING(emp_id)
LauJensen commented 12 years ago

Bendlas have you pinpointed the cause yet?