2017-10-07 14 views
0

ここに私の質問です。私はどこから始めるべきかわからない。 各従業員の氏名、姓、役職名、勤務先の氏名、姓、肩書きを記載します。監督者のいない従業員は、監督者の価値のためにnullを設定する必要があります。スーパバイザのカラムには、SuperFirst、SuperLast、およびSuperTitleのエイリアスのみを指定します。列は、FirstName、LastName、Title、SuperFirst、SuperLast、およびSuperTitleの順に並べる必要があります。ここでSQLクエリAilas問題

は、ERダイアグラムです:

Here's the ER Diagram

+1

あなたの努力を分かち合いましょう。さもなければ、あなたの宿題は完了しません。 –

答えて

0

ここで問題とは何ですか?ご協力いただける明確なご質問をください。 例以下は参考用です。

LEFT参加すべての従業員はスーパーバイザーを持っているものとそうでないものすべてを返します。そうでないものは、 "S. *"列にNULL値を持ちます。それはあなたが必要とするものを達成するはずです。

SELECT FirstName, LastName, Title, S.FirstName AS SuperFirst, S.LastName AS SupertLast, S.Title AS SuperTitle 
FROM dbo.Employee E 
LEFT JOIN dbo.Employee S ON E.ReportsTo = S.EmployeeID 
+0

申し訳ありませんが、質問はこちらです。各従業員の氏名、姓、肩書き、肩書きのタイトル、氏名、肩書きを記載する;スーパーバイザを持たない従業員は、スーパーバイザーの値にnullを付ける必要があります。 、andSuperTitle;列の順序は、FirstName、LastName、Title、SuperFirst、SuperLast、およびSuperTitleの順にする必要があります。 –

+0

それは私が主な問題だと思う全体の問題です。私は監督者の属性が表示されないので、従業員と監督者を関連付ける方法を理解できません。 –

+0

ERダイアグラムでスーパーバイザテーブルが表示されません。テーブルの関係が明確になるようにフィールドの名前が正しく設定されていません。 例:従業員テーブルが顧客テーブルにリンクされている場合、従業員テーブルは主キー「ID」を持ち、顧客テーブルの外部キーには「従業員ID」というラベルが付けられます。これが一般的なSQL標準です。 –

0

Employee自分自身を参照するために以下のように自己結合を探しています。

SELECT emp.FirstName 
    ,emp.LastName 
    ,emp.Title 
    ,super.FirstName as SuperFirst 
    ,super.LastName as SuperLast 
    ,super.Title as SuperTitle 
FROM employee emp 
LEFT JOIN employee super ON emp.reportsto = super.EmployeeId 
ORDER BY 1 
    ,2 
    ,3 
    ,4 
    ,5 
    ,6; 

Left join一致する値が取得されていない場合は、スーパバイザ列にnullを配置します。

+0

ORDER BYはこのクエリにどのような影響を与えますか? –

+0

@ JohnW:あなたの質問では、FirstName、LastName、Title、SuperFirst、SuperLast、およびSuperTitleでデータを並べる必要があると述べました。データをそれぞれソートします。 – zarruq

+0

@ JohnW: "FirstName column is ambiguous"でWA Eのクエリが失敗する – zarruq