sql >> データベース >  >> RDS >> Mysql

結合が正しい結果を返さない。私は何が間違っているのですか?

    count、sumなどの関数を使用する場合は、結果のグループ化を制御するためにgroupby句を追加する必要があります。

    select 
        concat(u.first_name, ' ', u.last_name) as name, 
        u.skill, 
        ut.name as team_name,
        (count(if(a.tech_id = u.user_id AND a.qc_id = 0 AND a.status = 2,1,0))) AS assigned_scopes,
        (count(if(a.tech_id = u.user_id  AND a.qc_id > 0 AND a.status = 3,1,0))) AS assigned_qa,
        (count(if(a.assignment_id=o.assignment_id and a.tech_id = u.user_id  AND a.status = 2 AND a.qc_id = 0 and o.class_id= 3,1,0))) AS assigned_canvass,
    from am_ts_order o 
    left join am_ts_assignment a
        ON a.assignment_id=o.assignment_id
    left join am_user u
        ON a.tech_id=u.user_id
    left join user_team ut
        ON u.user_team_id = ut.user_team_id
    where u.user_role_id = 15
        and u.user_team_id = ut.user_team_id
    order by u.first_name asc
    group by a.tech_id
    

    更新:

    このクエリは、IF条件を変更して、左側に結合されたテーブルの一部で一致する行が見つかったかどうかをテストします。

    select 
        concat(u.first_name, ' ', u.last_name) as name, 
        u.skill, 
        ut.name as team_name,
        count(if(
            (NOT a.tech_id IS NULL) AND 
            (NOT u.user_id IS NULL) AND 
            a.qc_id = 0 AND 
            a.status = 2,1,0)) AS assigned_scopes,
        count(if(
            (NOT a.tech_id IS NULL) AND 
            a.qc_id > 0 AND 
            a.status = 3,1,0)) AS assigned_qa,
        count(if(
            (NOT a.assignment_id IS NULL) AND
            a.assignment_id = o.assignment_id AND 
            a.tech_id = u.user_id AND 
            a.status = 2 AND 
            a.qc_id = 0 AND 
            o.class_id= 3,1,0)) AS assigned_canvass,
    from am_ts_order o 
    left join am_ts_assignment a
        ON a.assignment_id=o.assignment_id
    left join am_user u
        ON a.tech_id=u.user_id
    left join user_team ut
        ON u.user_team_id = ut.user_team_id
    where u.user_role_id = 15
        and u.user_team_id = ut.user_team_id
    order by u.first_name asc
    group by a.tech_id
    



    1. MySQL挿入:最初にテストしますか?

    2. 教義によるMYSQLソート

    3. BLOBを除くすべてのフィールドでSELECTDISTINCTを実行するにはどうすればよいですか?

    4. XAMPPセットアップ-MySQLが機能しない