2017-03-21 18 views
0

誰も私のコードが返す最初の4つのレコード以外のすべてに対してNull値を取得している理由を説明できますか? My Teachersテーブルには4つのレコードしかないので、結合構文が間違っていると思います。 申し訳ありませんが、私はまだジョインの周りに頭を抱えていません。ヌル値を返す結合?

USE Assignment 
GO 
CREATE VIEW PupilsAges AS 
SELECT Pupil_ID,PupilDetails.FName, 
PupilDetails.LName, PupilDetails.DOB, 
DATEDIFF(year, GETDATE(),PupilDetails.DOB) AS "PupilAge", 
Instrument, 
(Teachers.FName+' '+Teachers.LName) AS Teacher 
FROM Teachers JOIN PupilDetails 
ON Teachers.ID = PupilDetails.Pupil_ID 
+0

クエリの結合条件に応じて、瞳孔も教師である可能性があります。逆もまた同様です。あれは正しいですか?そうでなければ、あなたはteachers.idとpupildetails.teacheridに参加する必要があると思う。 –

+1

次回は、テーブル構造のDDL文を追加して、より確実な回答を支援してください。また、ビューを作成することを複雑にする前に、SELECTコンポーネントだけをテストしてデバッグしてください –

答えて

2

あなたTeachers.ID = PupilDetails.Pupil_ID

これに参加することは、問題になりそうだ、あなたがテーブルのスキーマを列挙されていない、しかし、これに似た何かを試してください:あなたがに参加したい

USE Assignment 
GO 
CREATE VIEW PupilsAges AS 
SELECT Pupil_ID,PupilDetails.FName, 
PupilDetails.LName, PupilDetails.DOB, 
DATEDIFF(year, GETDATE(),PupilDetails.DOB) AS "PupilAge", 
Instrument, 
(Teachers.FName+' '+Teachers.LName) AS Teacher 
FROM Teachers JOIN PupilDetails 
ON Teachers.ID = PupilDetails.Teacher_ID 
+0

ありがとう、私は問題を参照してください。 :) –

0

を2つのテーブル間のデータに関連するフィールド。お茶の彼女の場合、IDフィールドは教師を識別する必要があります。 pupilDetails pupil_idは、瞳孔を識別します。 teacher_idフィールドがある場合は、そのフィールドに参加します。

あなたの現在の質問では、先生4人しかいないので、最初の4人の生徒に合格すると、5人以上の生徒に参加する人がわかりません。あなたが適切なフィールドに参加するとき、教師は繰り返す必要があります。

関連する問題