Efficient SQL query with subquery and multiple joins
I have the following SQL query that performs a subquery and joins two tables which is 开发者_运维百科then joined with a primary table:
SELECT a.id, cgso.sf_guard_user_id as cgso, cgal.sf_guard_user_id as cgal
FROM table_a a
JOIN ( SELECT cgso.sf_guard_user_id, cgso.speciality_id
FROM table_c g
JOIN table_b as cgso
ON g.user_id = cgso.sf_guard_user_id and g.group_id = 2) as cgso
ON a.speciality_id = cgso.speciality_id
JOIN ( SELECT cgal.sf_guard_user_id, cgal.speciality_id
FROM table_c g
JOIN table_b as cgal
ON g.user_id = cgal.sf_guard_user_id and g.group_id = 1) as cgal
ON a.speciality_id = cgal.speciality_id
The output of the query is:
id | cgso | cgal
----------------
1 | 2 | 54
The output is fine and as intended, however is there a more efficient way to get the same output? Any tips or advice would be much appreciated.
Thank You
You should be able to just simplify the joins...
SELECT a.id, cgso.sf_guard_user_id as cgso, cgal.sf_guard_user_id as cgal
FROM table_a a
INNER JOIN table_c g2 ON g1.group_id = 2
INNER JOIN table_b cgso ON g2.user_id = cgso.sf_guard_user_id AND cgso.specialty_id = a.specialty_id
INNER JOIN table_c g1 ON g1.user_id = 1
INNER JOIN table_b cgal ON g1.user_id = cgal.sf_guard_user_id AND cgal.specialty_id = a.specialty_id
精彩评论