繁体   English   中英

MySQL-如何使用左右联接获取结果

[英]MySQL - How to use Left and Right Joins to get the result

我知道aw_id,ad_id和grp_id的值(例如aw_id = 5,ad_id = 46和grp_id = 2)。

我想在其中显示所有at_cub_details:

at_cub_details.grp_id = 2 AND
at_cub_details.cd_id = at_cub_awards.cd_id AND 
at_cub_awards.aw_id = 5 AND 
at_cub_awards.ca_awarded_date IS NULL 
OR at_cub_details.cd_id = at_cub_awards.cd_id AND 
at_cub_awards.aw_id = 5 does not exist

Where at_cub_details.cd_id = at_cub_awards.cd_id AND 
at_cub_awards.aw_id = 5 AND 
at_cub_awards.ca_awarded_date = NULL does exist **then** 
at_cub_awards.ca_id = at_cub_award_date.ca_id 
AND at_cub_award_date.ad_id = 46 
AND at_cub_award_date.cad_task_completion_date IS NULL OR 
at_cub_awards.ca_id = at_cub_award_date.ca_id AND 
at_cub_award_date.ad_id = 46 does not exist

我已经尝试过各种形式的RIGHT和LEFT连接,但是没有任何运气。

解决方案是:

String selectQry = ("SELECT * from ( " +
            "SELECT DISTINCT at_cub_details.cd_id as cdid, " +
                "at_cub_details.grp_id as grpid, " +
                "at_cub_details.cd_surname as surname, " +
                "at_cub_details.cd_first_name as firstName, " +
                "at_cub_details.cd_dob as dob, " +
                "at_cub_details.cd_photograph as photograph, " +
                "at_cub_details.cd_archived as archived, " +
                "at_cub_details.cd_scout_no as scoutNo " +
            "FROM at_account_group, at_cub_details " +
            "LEFT JOIN at_cub_awards ON (at_cub_details.cd_id = at_cub_awards.cd_id AND at_cub_awards.aw_id = ?) " +
            "WHERE at_cub_awards.cd_id IS NULL " +
                "AND at_cub_details.grp_id = at_account_group.grp_id " +
                "AND at_account_group.acc_id = ? " +

            "UNION " +
            "SELECT DISTINCT at_cub_details.cd_id as cdid, " +
                            "at_cub_details.grp_id as grpid, " +
                            "at_cub_details.cd_surname as surname, " +
                            "at_cub_details.cd_first_name as firstName, " +
                            "at_cub_details.cd_dob as dob, " +
                            "at_cub_details.cd_photograph as photograph, " +
                            "at_cub_details.cd_archived as archived, " +
                            "at_cub_details.cd_scout_no as scoutNo " +
            "FROM at_account_group, at_cub_details, at_cub_awards, at_cub_award_date " +
            "WHERE at_cub_details.grp_id = at_account_group.grp_id " +
                "AND at_account_group.acc_id = ? " +
                "AND at_cub_awards.cd_id  = at_cub_details.cd_id " + 
                "AND (at_cub_awards.aw_id = ? AND at_cub_awards.ca_awarded_date IS NULL) " +
                "AND (at_cub_awards.ca_id = at_cub_award_date. ca_id " +
                        "AND at_cub_award_date.cad_task_completion_date IS NULL " +
                        "AND at_cub_award_date.ad_id = ?) " +

            "UNION " +
            "SELECT DISTINCT at_cub_details.cd_id as cdid, " +
                            "at_cub_details.grp_id as grpid, " +
                            "at_cub_details.cd_surname as surname, " + 
                            "at_cub_details.cd_first_name as firstName, " +
                            "at_cub_details.cd_dob as dob, " +
                            "at_cub_details.cd_photograph as photograph, " +
                            "at_cub_details.cd_archived as archived, " +
                            "at_cub_details.cd_scout_no as scoutNo " +
            "FROM at_account_group, at_cub_details, at_cub_awards " +
            "LEFT JOIN at_cub_award_date ON (at_cub_awards.ca_id = at_cub_award_date.ca_id) " +
            "WHERE at_cub_award_date.ca_id IS NULL " +
                "AND at_cub_awards.ca_awarded_date IS NULL AND at_cub_awards.aw_id = ? " +
                "AND at_cub_details.grp_id = at_account_group.grp_id " +
                "AND at_account_group.acc_id = ? " + 
                "AND at_cub_awards.cd_id  = at_cub_details.cd_id " +

            " ) a " +
            "ORDER BY surname, firstName;");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM