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

mysqlでSQL結合を使用する方法

        select tu.mr_fname, tu.mr_lname, count(ts.mr_id) as `count` 
    from tbl_user tu 
    inner join tbl_schedule ts on ts.mr_id = tu.mr_id and 
          ts.sch_date between '2012-01-01' and '2012-08-01' 
    group by tu.mr_id
    

    上記はあなたにそれをスケジュールする行を持つすべてのユーザーを取得します。したがって、カウントが0のユーザーは表示されません。

    select tu.mr_fname, tu.mr_lname, count(ts.mr_id) as `count` 
    from tbl_user tu 
    left join tbl_schedule ts on ts.mr_id = tu.mr_id and 
          ts.sch_date between '2012-01-01' and '2012-08-01' 
    group by tu.mr_id
    

    このクエリは、ユーザーの名前と名前を選択し、ユーザーIDがスケジュールテーブルに表示される回数をカウントします。

    これは、ユーザーIDでグループ化することによって行われます。

    さらに、ユーザーIDと日付に基づいて左結合を使用します。すべてのユーザーが選択されるように、ここに日付条件を入力することが重要です。これは、左側の結合には、一致しなかったすべてのユーザーも含まれるためです。ただし、これをwhere句に指定すると、すべてのユーザーが選択されるわけではありません。つまり、where句に日付条件を指定すると、「gerrychandan」のカウントはゼロになりません。代わりに、彼は結果から除外されます。



    1. mysqlアダプターをインストールしてください'geminstall activerecord-mysql-adapter'

    2. MySQLストアドプロシージャのパラメータとしてテーブルを送信するとエラーが発生します

    3. Oracle 18cの新機能:パーティショニングのオンライン変更

    4. エラー1022-書き込めません。テーブル内の重複キー