0

スリー テーブルコース、登録、学生

学生の列

firstname,lastname,studentid,major,admitdate,graddate,gender,dob

登録列

courseid,studentid

コースの列

coursenumber,coursename,credits

変更が必要な select ステートメント

select lastname as 'Last Name',sum(credits) as 'Credits Registered For' from students   as s
inner join registration as r on s.studentid = r.studentid
inner join courses as c on c.coursenumber = c.courseid
group by last name;

ラボでの質問は... 前のクエリを変更して、クラスに登録していない場合でも、すべての学生を表示します。14行あるはずです。登録されていない学生は、出力に NULL が表示されます。

これには何らかの外部結合が必要であることは知っていますが、これらの結合を完全には把握していません。ここや他のサイトで複数の投稿を読んだことがありますが、理解できないようです。

4

2 に答える 2

3

使用するLEFT JOIN

select  lastname as 'Last Name',
        sum(credits) as 'Credits Registered For' 
from    students   as s
        LEFT join registration as r on s.studentid = r.studentid
        LEFT join courses as c on c.coursenumber = r.courseid
group by last name;
于 2012-11-16T04:55:16.907 に答える
0

試す

SELECT  s.lastname AS 'Last Name',
        sum(c.credits) AS 'Credits Registered For' 
FROM    students    s
        LEFT JOIN registration  r ON (s.studentid = r.studentid)
        INNER JOIN courses  c ON (c.coursenumber = r.courseid)
GROUP BY lastname;

注:ASテーブル名にエイリアスを指定するときに使用する必要はありません

于 2012-11-16T04:58:05.177 に答える