1

1つ以上のフィールドにnull値を持つテーブル2の対応するレコードに基づくステータスとともに、テーブル1のレコードを一覧表示するクエリを作成しようとしています。私が遭遇している問題は、テーブル2に対応するレコードがないテーブル1のレコードをどのように含めるかです。

私の例では、tblStudentのすべての学生の名前と、tblStudentScheduleのスケジュールのステータスを示すフィールドを一覧表示ます。tblStudentScheduleのコースまたは教師フィールドのいずれかがNullであるか、tblStudentScheduleに対応するレコードが見つからない場合は、 「不完全」を表示したいと思います。それ以外の場合は、 「完了」を表示したい。

望ましい結果

Name  | Schedule Status
-----------------------
Bob   | Incomplete     
Sally | Incomplete
Jane  | Incomplete
Matt  | Incomplete
Jim   | Complete

私はAccessで働いています。クエリの試行を投稿しますが、問題を混乱させるだけだと思います。これはおそらく非常に基本的なことですが、私はこれに私の脳を包み込もうとしている精神的なブロックを持っています。

tblStudent

studentID | studentName
-----------------------
1         | Bob
2         | Sally
3         | Jane
4         | Matt
5         | Jim

tblStudentSchedule

studentID | period | course | teacher
-------------------------------------
1         | 1      | math   | Jones
1         | 2      | <null> | Watson
2         | 1      | reading| <null>
4         | 1      | <null> | Crick
5         | 1      | math   | Jones
4

2 に答える 2

2
select  s.studentName as Name
,       iif(sum(iif(ss.course is null or ss.teacher is null, 1, 0)) = 0,
            'Complete', 'Incomplete')
        as [Schedule Status]
from    tblStudent s
left join    
        tblStudentSchedule ss
on      ss.studentID = s.studentID
group by
        s.studentName 

一致するものが見つからない場合、Aleft joinは単一の行を返します。nullしたがって、チェックオンss.course is nullは、学生がスケジュールテーブルにいないときにもトリガーされます。

于 2012-12-06T14:56:21.970 に答える
0

tblStudentScheduleに対応するレコードが見つからない場合は、左結合または右結合を使用して、このテーブルから行をnull列として取得できます。以下をお読みください:

http://office.microsoft.com/en-us/access-help/left-join-right-join-operations-HP001032251.aspx

次に、null列を変換するには、isnull関数 http://www.techonthenet.com/access/functions/advanced/isnull.phpを使用します。

または、caseステートメントを使用してnullをチェックします http://www.techonthenet.com/access/functions/advanced/case.php

于 2012-12-06T14:57:39.860 に答える