2010-11-23 12 views
1

各従業員の従属テーブルのすべてのレコードを表示するビューを作成する必要があります。表。次のコードを使用しましたが、実行しようとするとエラーが表示されます。2つ以上のテーブルのレコードを表示するためのビューの作成

CREATE VIEW EmpDependent 
AS 
SELECT JoinDate 
FROM Lecturer,BranchManager,NonAcademicStaff 
INNER JOIN LecDependent.EmpRegNo=Lecturer.EmpRegNo=BranchManager.EmpRegNo=NonAcademicStaff.EmpRegNo 

+1

エラーは何ですか? –

+0

'select'ステートメントは、それ自身で実行すると、探しているものを返しますか? – chezy525

+0

あなたから残っています - lecdepedent - –

答えて

1

あなたの結合構文が正しくありません助けてください。一般的に、次の操作を実行する必要がありますB二つのテーブルAを結合し、する:そのテーブルA考える

select a.*, b.* 
from A a inner join B b on b.a_id = a.id 

は、列がidと呼ばれ、テーブルBは(おそらく、好ましくは、外部キーである)a_idという名前の列を持っている持っています。

あなたは、インナーが好きなように参加するなど、多くの追加することができますたとえば、あなたが持つ上記拡張することができ:あなたは、あなたが期待する行を返すselect文を作成したら

inner join C on c.b_id = b.id 

、あなたはに基づいてビューを作成することができますその声明。あなたが好きなものを使用する必要があります

1

CREATE VIEW EmpDependent AS 
    SELECT N.JoinDate 
     FROM Lecturer   AS L 
     JOIN BranchManager AS B ON L.EmpRegNo = B.EmpRegNo 
     JOIN NonAcademicStaff AS N ON B.EmpRegNo = N.EmpRegNo 

はしかし、あなたのクエリがFROM句で引用されていないテーブルLecDependentを一覧表示し、講師も非教員である理由は明らかではないが、メンバーと支店マネージャー(また、講師も自分自身に依存しています)。

また、どのテーブルにJoinDate列が含まれているかについての情報は表示されませんでした。NonAcademicStaffを推測しましたが、そのいずれかになる可能性があります。また、多数のフィルタ条件がなくても、単一の列に対して3つのテーブル結合(または4つのテーブル結合)が必要になることはまずありません。

全体として、ビューにカプセル化しているクエリについて懸命に考える必要があります。

+0

実際には、各テーブル、Lecturer、BranchManager、NonAcademicStaffはJoinDate列で構成されています。従属はLecDependent、BrManDependent、NonAcDependentと同様です。出力はすべて従属の詳細とJoinDateでなければなりません – Yoosuf

+0

@Yoosuf:どのようなビューが表示されるはずですか?各テーブルの概要は何ですか?私は最後のコメントを強調しています。「あなたがカプセル化している質問について、あなたは一生懸命考える必要があります。実際には、ビュー内でカプセル化しようとする前に、適切な作業照会を行う必要があります。 –

+0

ビューには、各従業員(講師、branchManager、NonAcademicStaff)のJoinDateとそれぞれの従属情報が表示されます。 – Yoosuf

関連する問題