2017-05-12 9 views
0

私は従業員テーブルを持っているから、カウントを取得SQLクエリ - 従属テーブル、多くのテーブル

従業員テーブル

  • は、(作業、引退
  • EMPNAME
  • 状況をEMPID故意、終了)

依存

  • ID
  • さて、私はカウントを取得するために照会するなど

....名前

  • relationtoemp
  • 年齢
  • をEMPID総従業員の数、各ステータス(勤務、退職した..)の総従業員数、すべての従業員のための扶養家族

    助けが必要ですか?

  • +0

    'count()'を見てください - https://dev.mysql.com/doc/refman/5.7/en/counting-rows.html – ThisGuyHasTwoThumbs

    +0

    このチェックカウント()とグループのために別のクエリが必要ですあなたが試してみると、ここに戻ってくるよりも得ることができません –

    +0

    あなたの質問を編集し、サンプルデータと期待される結果を提供してください。 –

    答えて

    0

    あなたが探しているキーワードはexempleについては"Count"

    です:'SELECT COUNT(empid) FROM employee WHERE status = working'

    は、これはこれはあなたによってグループ化されたカウントを与えるあなたのステータスが

    +0

    YEs私は単一のテーブルでそれを得ました。しかし、私は必要ですまた、従属テーブルを含めると、単一のクエリでカウントを取得 – ASD

    0

    を「作業」された従業員の数を与えますあなたはこのようなPrepared Statementsを試すことができ、ステータス

    SELECT COUNT(emp.empid) as counts, status 
    FROM employee emp join employee2 emp2 on emp.empid = emp2.empid 
    group by status 
    
    +0

    YEs私は単一のテーブルでそれを得た。しかし、私も依存テーブルを含める必要があります単一のクエリでカウントを取得 – ASD

    +0

    これはあなたの従属表は必要な処理を行います – jimmy8ball

    +0

    table2に従属レコードがない場合は、内部結合によってカウントから削除されます – jimmy8ball

    0

    set @sql = (
        select group_concat(distinct 
         concat(
          "sum(case when `status`='", e.status, "' then 1 end) as `", e.status, "`" 
         ) 
        ) 
        from employee e 
    ); 
    
    set @sql = concat("select count(e.empid) total_emp, (select count(*) from dependent) total_dep , ", @sql, " from employee e"); 
    
    prepare stmt from @sql; 
    
    execute stmt; 
    

    最初の部分では従業員のステータスごとに列が動的に生成され、副選択では扶養家族の合計をカウントできます。

    関連する問題