Access 2016-如果表中存在项,则返回TRUE;如果缺少项,则为False



好的,我有两张表。

1列出了一系列课程及其详细信息。1列出了一系列课程及其相关联系。

我需要创建一个查询,列出课程名称,列出所有课程,然后指示课程是否在课程中(TRUE(或不存在(FALSE(。

以下是我迄今为止所做的尝试。

左外部加入课程表,因为我想要所有课程与课程相比

计算每门课程的课程ID数量-不起作用仅返回'1'值;并且只显示课程中的课程

查找两个表之间的差异-不起作用,只显示值而没有课程。

尝试IIF(为NULL(计算-不起作用,只返回"TRUE"值;并且只显示课程中的课程。

这应该很容易。有人能帮我创建查询吗。基本上,我需要两个表中的所有值都显示出来,然后显示与课程相关的值为NULL的位置。

表1:

COURSE ID    COURSE NAME
1              ENGLISH
2              FRENCH
3              DRAWING
4              SKETCHING

表2

Curriculum ID          Curriculum NameID        Course ID
1                      Senior   (actually #)       1
2                      Senior                      3
3                      Junior                      1
4                      Junior                      2
5                      Junior                      3

结果

Curriculum Name          Course Name             In Curriculum
Senior                     English                True
Senior                     French                 False
Senior                     Drawing                True
Senior                     Sketching              False
Junior                     English                True
Junior                     French                 True
Junior                     Drawing                True
Junior                     Sketching              False

TJ

由于课程之间本质上存在多对多的关系;课程(一门课程可能出现在几个课程中,一个课程可能包含几个课程(,我建议以以下方式构建您的数据:

表:课程

+-------+-----------+
| Co_ID |  Co_Desc  |
+-------+-----------+
|     1 | English   |
|     2 | French    |
|     3 | Drawing   |
|     4 | Sketching |
+-------+-----------+

表:课程

+-------+---------+
| Cu_ID | Cu_Desc |
+-------+---------+
|     1 | Junior  |
|     2 | Senior  |
+-------+---------+

连接表:课程_课程

+----------+----------+
| CC_Cu_ID | CC_Co_ID |
+----------+----------+
|        1 |        1 |
|        1 |        2 |
|        1 |        3 |
|        2 |        1 |
|        2 |        3 |
+----------+----------+

然后,您的查询相对容易构建,因为您可以按照以下方式使用交叉联接和左联接的组合:

select 
t.cu_desc as [Curriculum Name], 
t.co_desc as [Course Name], 
not cc_cu_id is null as [In Curriculum]
from
(select * from curriculums, courses) t left join curriculum_courses u on
t.cu_id = u.cc_cu_id and
t.co_id = u.cc_co_id
order by
t.cu_id, t.co_id

相关内容

最新更新