【问题标题】:Access 2016 - Return TRUE if Item exists in Table, False if Item is MissingAccess 2016 - 如果项目存在于表中,则返回 TRUE,如果项目缺失,则返回 False
【发布时间】:2020-12-23 19:35:22
【问题描述】:

好的,我有两张桌子。

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

我需要创建一个查询来列出课程名称、列出所有课程,然后指明课程是在课程中 (TRUE) 还是不存在 (FALSE)。

这是我迄今为止尝试过的。

课程表的左外连接,因为我希望所有课程都与课程表进行比较

计算每门课程的课程 ID 数量 - 仅返回“1”值无效;并且只显示课程中的课程

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

尝试了 IIF(IS NULL) 计算 - 仅返回“真”值无效;并且只显示课程中的课程。

这应该很容易。有人可以帮我创建查询。基本上,我需要显示两个表中的所有值,然后显示与课程相关的值为 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

【问题讨论】:

  • 显示所需最终结果的示例数据将有助于我们更好地了解您的要求。
  • 我尝试添加表格...

标签: sql ms-access left-join ms-access-2016


【解决方案1】:

由于您在课程和课程表之间基本上存在多对多关系(一个课程可能出现在多个课程表中,并且一个课程表可能包含多个课程),我建议您按以下方式构建您的数据:

表:课程

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

表:课程表

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

连接表:Curriculum_Courses

+----------+----------+
| 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多