clojureql icon indicating copy to clipboard operation
clojureql copied to clipboard

join - aggregate - join bleeds out join from subselect

Open bendlas opened this issue 14 years ago • 1 comments

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)

bendlas avatar Oct 05 '11 13:10 bendlas

Bendlas have you pinpointed the cause yet?

LauJensen avatar Jan 14 '12 00:01 LauJensen