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

MySQLクエリ1つのクエリで異なるカウントの2つの異なる条件

    このクエリはあなたを助けることができるはずです。それが行う最大のことは、すべての予定を合計でカウントし、IFステータス=完了で合計して、同じクエリで合計と完了の両方を取得することです。

    SELECT
        sc.id,
        COUNT(ap.id) as total,
        SUM(IF(status = 'completed', 1, 0)) as completed
    FROM
        com_event_schedules sc
    LEFT JOIN
        com_event_schedules_com_appointment_c re
        ON re.com_event_schedules_com_appointmentcom_event_schedules_ida = sc.id
    LEFT JOIN
        com_appointment ap
        ON re.com_event_schedules_com_appointmentcom_appointment_idb = ap.id
    WHERE
        sc.deleted = 0
    GROUP BY
        sc.id
    

    また、1対多の関係だとおっしゃっていました。あなたが持っているようなリレーショナルテーブルは、本当に多対多のためのものです。 1対多にする最も効率的な方法は、com_event_schedules_com_appointment_cを取り除くことです。 テーブルを作成し、com_event_schedule_idを追加します com_appointmentsへ テーブル。




    1. REPLACEを使用したupdateステートメントのmysqlケース

    2. CAST()を使用してSQLServerで文字列を日付/時刻に変換する方法

    3. MicrosoftAccessテンプレートをダウンロードして使用する5つの大きな理由

    4. 悪いスタンバイ