2017-06-19 15 views
0

を同じ外部キーを持っています2.テーブルスタッフ スタッフID = FK 名前 住所 性別 問い合わせ Supervisor_ID =スーパーバイザーを持っていないならば、NULL BranchIDは2つのテーブルに参加し、私は3台</p> <p>1.Table支店のように見える <strong>BranchID</strong> = FK <strong>名前</strong> <strong>住所</strong> <strong>問い合わせ</strong></p> <p>を持っている第三に、テーブルから

3.Tableマネージャー Staff_ID = FK 名前 住所 性別 問い合わせ BranchID

私は、各支店でスタッフの配布を示すリストを作成したいと思います。ブランチ番号、マネージャー名、監督者の総数、および各支店の男性スタッフと女性スタッフの合計数を含めます。

上記のようにSQL文を使用して結果セットを取得するにはどうすればよいですか?以下は

選択Manager.Nameは、Branch.BranchNumは、(ケースStaff.gender = '男' とSupervisor_IDを(Supervisor_IDが、その後1他のヌル終了nullの場合を)、NumberofSupervisorとしてカウント数える私のクエリですがnullでない場合は1、その他の場合はnull end)、Branch.BranchNum = Manager.BranchNumに参加すると、Male、count(Staff.gender = 'Female'およびSupervisor_IDがnullでない場合、 Branch.BranchNum = Staff.BranchNumによるStaff.BranchNumグループ

このエラーが発生します。集計関数またはGROUP BY句に含まれていないため、 'Manager.Name'列が選択リストで無効です。

私を案内してもらえますか?

ありがとうございます。

+1

あなたを妨げるものは何ですか?あなたが試したことと、それが正しく働いていない理由を分かち合うことができますか? –

+0

ID列はそれぞれのテーブルのプライマリキーであると言っていると思います) – SchmitzIT

+2

参加したいテーブルのテーブル構造と正確な結果の詳細をあなたの質問に共有できますか? –

答えて

0

ここでは自己結合の非常に良いチュートリアルです。これがあなたを助けることを願っています。

enter image description here

http://csharp-video-tutorials.blogspot.com/2012/08/self-join-in-sql-server-part-14.html

は、次のような結果を与えるクエリを記述します。

enter image description here

セルフクエリに参加: MANAGERもEMPLOYEEです。 EMPLOYEEとMANAGERの両方の行が同じ表に存在します。ここでは、tblEmployeeと別のエイリアス名を使用して、EmployeeにはE、ManagerにはMを使用して参加します。 ManagerId NULLで行を取得するために、LEFT JOINを使用しています。 TODDのレコードも取得されていますが、MANAGERはNULLです。LEFT JOINをINNER JOINに置き換えた場合、TODDのレコードは取得できません。 社員として選択E.Name、M.Nameマネージャー としてtblEmployee E から左要するにE.ManagerId = M.EmployeeId

でtblEmployee M に参加し、自分自身でテーブルに参加するには自己結合と呼ばれています。 SELF JOINは、異なるタイプのJOINではありません。 JOIN-INNER、OUTERまたはCROSS結合のいずれのタイプでも分類できます。上記のクエリはLEFT OUTER SELF Joinです。

インナーセルフ参加tblEmployeeテーブル:E.ManagerId = M.EmployeeId

クロスセルフtblEmployeeテーブルを結合に関する従業員、マネージャー としてtblEmployee E インナー参加tblEmployee M からM.Nameとして 選択E.Name : E.NameをEmployeeとして、M.Nameをマネージャとして選択 からtblEmployee クロス参加tblEmployee

関連する問題

 関連する問題