gpt4 book ai didi

ms-access - 我想了解 Microsoft Access 向导生成的查询

转载 作者:行者123 更新时间:2023-12-04 21:46:47 25 4
gpt4 key购买 nike

假设我有一个名为 tbl_med 的表,它有六个字段:[nom_lab]、[nom_desc]、[nom_apres]、[date_vig]、[cod_med]、[vr_pmc]。

我想要一个 MS Access SQL 查询,它将:

  • 查找与以下四个字段相关的重复记录:[nom_lab]、[nom_desc]、[nom_apres]、[date_vig]。
  • 显示所有六个字段(不仅仅是用于检查重复项的字段)。

  • 我使用了 MS Access“查找重复查询向导”,它给了我以下 SQL:
    SELECT tbl_med.[nom_lab], tbl_med.[nom_desc], tbl_med.[nom_apres], tbl_med.[date_vig], tbl_med.[cod_med], tbl_med.[vr_pmc]
    FROM tbl_med
    WHERE tbl_med.[nom_lab]
    IN
    (
    SELECT [nom_lab]
    FROM [tbl_med] As Tmp
    GROUP BY [nom_lab], [nom_desc], [nom_apres],[date_vig]
    HAVING Count(*)>1
        And [nom_desc] = [tbl_med].[nom_desc] 
    And [nom_apres] = [tbl_med].[nom_apres]
    And [date_vig] = [tbl_med].[date_vig]
    )
    ORDER BY tbl_med.[nom_lab], tbl_med.[nom_desc], tbl_med.[nom_apres], tbl_med.[date_vig];

    谁能解释为什么三个 And上面的水平规则线之间的条件是必要的吗?

    有没有人有更直观的查询更容易理解?

    最佳答案

    本质上,三个 And子句的存在是因为您告诉查询向导您想检查重复项,而不仅仅是在 [nom_lab] 上。场,还要上[nom_desc] , [nom_apres] , 和 [date_vig]字段(如您在问题开头所述)。
    SELECT [nom_lab] FROM [tbl_med] As Tmp ... HAVING Count(*)>1子查询的一部分告诉它查找重复的记录 [nom_lab]值。 And子句然后通过实际上说“除了具有重复的 [nom_lab] 值之外,我只想查看在所有其他三个字段中也有重复的记录( [nom_desc][nom_apres] )来满足您要求的其余重复标准, 和 [date_vig] ) 也是如此。”

    所以要回答你的第二个问题,我真的不明白你怎么能强制它更直观。 SQL 有时只是一种让您头脑清醒的棘手语言,并且像任何语言(无论是编程语言还是口语)一样,在您轻松地阅读它之前,需要花时间了解其模式和细微差别。

    关于ms-access - 我想了解 Microsoft Access 向导生成的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13289006/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com