开发者

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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜