Sql 查询不包括指定的表达式

Sql 查询不包括指定的表达式,sql,database,ms-access,Sql,Database,Ms Access,我在MS Access中遇到了一个问题。我试图添加一个共谋,但我得到了一个错误。 您的查询不包括作为聚合函数一部分的指定表达式“BorgA” 我正在使用此查询: SELECT SUM(A.TotaalPrijs) As TotaalPrijs, A.AutoNR, A.AutoKlasse, MAX(A.Factuur.Dagen) as Dagen, A.Prijzen.dag125KM as PrijsPerDag, A.Prijzen.E

我在MS Access中遇到了一个问题。我试图添加一个共谋,但我得到了一个错误。 您的查询不包括作为聚合函数一部分的指定表达式“BorgA”

我正在使用此查询:

 SELECT 
    SUM(A.TotaalPrijs) As TotaalPrijs,
    A.AutoNR,
    A.AutoKlasse,
    MAX(A.Factuur.Dagen) as Dagen,
    A.Prijzen.dag125KM as PrijsPerDag,
    A.Prijzen.ExtraKM As PrijsPerExtraKM,
    A.Factuur.FactuurNR,
    A.Factuur.KlantNR,
    A.Factuur.Begindatum,
    A.Factuur.Einddatum,
    A.Factuur.Borg,
    Gegevens.voorletters,
    Gegevens.tussenvoegsel,
    Gegevens.achternaam,
    Gegevens.straatnaam,
    Gegevens.huisNR,
    Gegevens.Postcode,
    Gegevens.rekeningNR,
    Gegevens.Plaats,
    A.KMteVEEL,
    B.BorgA
    FROM

    (SELECT Factuur.Dagen, Factuur.AutoNR AS carNR, autos.AutoNR, autos.Klasse AS AutoKlasse, Prijzen.Klasse, Prijzen.dag125KM, Prijzen.ExtraKM, (prijzen.dag125KM*Factuur.Dagen) AS MinPrijs, Factuur.FactuurNR, Factuur.KlantNR, Factuur.Begindatum, Factuur.Einddatum, Factuur.Borg, (KMteVEEL*[Prijzen]![ExtraKM])+([Prijzen]![dag125KM]*[Factuur]![Dagen]) AS TotaalPrijs, Gegevens.voorletters, Gegevens.tussenvoegsel, Gegevens.achternaam, Gegevens.straatnaam, Gegevens.huisNR, Gegevens.Postcode, Gegevens.rekeningNR, Gegevens.Plaats, IIf([Factuur]![EindKMStand]-[Factuur]![BeginKMStand]-([Factuur]![Dagen]*125) < 0, 0, [Factuur]![EindKMStand]-[Factuur]![BeginKMStand]-([Factuur]![Dagen]*125))  AS KMteVEEL
     FROM autos, Factuur, Prijzen, Gegevens
        WHERE (((Factuur.AutoNR)=Autos.AutoNR) And ((autos.Klasse)=Prijzen.Klasse) And ((Factuur.KlantNR)=Gegevens.KlantNR))

    ) AS A,
(SELECT  Prijzen.Borg as BorgA
FROM ((Prijzen 
     INNER JOIN Autos ON Autos.Klasse = Prijzen.Klasse)
     INNER JOIN Factuur ON Factuur.AutoNR = Autos.AutoNR)) AS B


    GROUP BY 
        A.AutoNR, A.AutoKlasse, A.Prijzen.dag125KM, A.Prijzen.ExtraKM, A.Factuur.FactuurNR, A.Factuur.KlantNR, A.Factuur.Begindatum, A.Factuur.Einddatum, A.Factuur.Borg, Gegevens.voorletters, Gegevens.tussenvoegsel, Gegevens.achternaam, Gegevens.straatnaam, Gegevens.huisNR, Gegevens.Postcode, Gegevens.rekeningNR, Gegevens.Plaats, A.KMteVEEL;
部分。 有办法让它工作吗? 我试着在小组中加入B.BorgA,但没有得到正确的结果。 还有其他办法让它工作吗


谢谢,

因为您没有限制A子查询和B子查询之间联接的条件,所以您得到的是笛卡尔积。您的子查询已经连接到Prijzen,因此只需将其添加到选择和分组依据列表中即可。还有其他清理:

  SELECT 
        SUM(TotaalPrijs) As TotaalPrijs,
        AutoNR,
        AutoKlasse,
        MAX(Dagen) as Dagen,
        dag125KM as PrijsPerDag,
        ExtraKM As PrijsPerExtraKM,
        FactuurNR,
        KlantNR,
        Begindatum,
        Einddatum,
        Borg,
        voorletters,
        tussenvoegsel,
        achternaam,
        straatnaam,
        huisNR,
        Postcode,
        rekeningNR,
        Plaats,
        KMteVEEL,
        BorgA
        FROM     (SELECT p.Borg as BorgA,f.Dagen, f.AutoNR AS carNR, a.AutoNR, a.Klasse AS AutoKlasse, p.Klasse, p.dag125KM, p.ExtraKM, (p.dag125KM*f.Dagen) AS MinPrijs, f.FactuurNR, f.KlantNR, f.Begindatum, f.Einddatum, f.Borg, (KMteVEEL*[Prijzen]![ExtraKM])+([Prijzen]![dag125KM]*[Factuur]![Dagen]) AS TotaalPrijs, g.voorletters, g.tussenvoegsel, g.achternaam, g.straatnaam, g.huisNR, g.Postcode, g.rekeningNR, g.Plaats, IIf([Factuur]![EindKMStand]-[Factuur]![BeginKMStand]-([Factuur]![Dagen]*125) < 0, 0, [Factuur]![EindKMStand]-[Factuur]![BeginKMStand]-([Factuur]![Dagen]*125))  AS KMteVEEL
                  FROM autos a
                  INNER JOIN Factuur f  ON a.AutoNR = f.AutoNR
                  INNER JOIN Prijzen p  ON a.Klasse = p.Klasse
                  INNER JOIN Gegevens g ON f.KlantNR = g.KlantNR    

       ) AS sub
GROUP BY AutoNR,
        AutoKlasse,
        dag125KM, 
        ExtraKM,
        FactuurNR,
        KlantNR,
        Begindatum,
        Einddatum,
        Borg,
        voorletters,
        tussenvoegsel,
        achternaam,
        straatnaam,
        huisNR,
        Postcode,
        rekeningNR,
        Plaats,
        KMteVEEL,
        BorgA

我还删除了过时的连接语法并添加了别名。子查询甚至不是必需的,但如果删除它,则必须适当地更改别名。

您在选择列表中选择了一个非聚合字段B.BorgA,但没有将其添加到group by中的B.BorgA中


为什么要从已在查询中的表中运行另一个SELECT?@Jesse发生了什么错误?噢,可能是因为子查询名的缘故,更新了。@Jesse-这不是连接多个查询的正确语法table@GoatCOFROM子句Error中仍然存在语法错误。@GoatCO我已在NoDisplayName的反应中添加了注释。您可能想看看它,因为它可能包含一些有用的信息。@Jesse不确定可能存在什么语法问题,它没有提供详细信息?除非最后的计算字段不正确,否则这里实际上没有太多内容。如果我按结果将其添加到组中,则结果不正确。在这里,您可以看到它只给出了所有可能的“borg”值。但是当我单独运行子查询B时,我得到了这样一个结果:正如你在最后一张图片上看到的那样。这就是我要添加到“main”查询中的结果。
  SELECT 
        SUM(TotaalPrijs) As TotaalPrijs,
        AutoNR,
        AutoKlasse,
        MAX(Dagen) as Dagen,
        dag125KM as PrijsPerDag,
        ExtraKM As PrijsPerExtraKM,
        FactuurNR,
        KlantNR,
        Begindatum,
        Einddatum,
        Borg,
        voorletters,
        tussenvoegsel,
        achternaam,
        straatnaam,
        huisNR,
        Postcode,
        rekeningNR,
        Plaats,
        KMteVEEL,
        BorgA
        FROM     (SELECT p.Borg as BorgA,f.Dagen, f.AutoNR AS carNR, a.AutoNR, a.Klasse AS AutoKlasse, p.Klasse, p.dag125KM, p.ExtraKM, (p.dag125KM*f.Dagen) AS MinPrijs, f.FactuurNR, f.KlantNR, f.Begindatum, f.Einddatum, f.Borg, (KMteVEEL*[Prijzen]![ExtraKM])+([Prijzen]![dag125KM]*[Factuur]![Dagen]) AS TotaalPrijs, g.voorletters, g.tussenvoegsel, g.achternaam, g.straatnaam, g.huisNR, g.Postcode, g.rekeningNR, g.Plaats, IIf([Factuur]![EindKMStand]-[Factuur]![BeginKMStand]-([Factuur]![Dagen]*125) < 0, 0, [Factuur]![EindKMStand]-[Factuur]![BeginKMStand]-([Factuur]![Dagen]*125))  AS KMteVEEL
                  FROM autos a
                  INNER JOIN Factuur f  ON a.AutoNR = f.AutoNR
                  INNER JOIN Prijzen p  ON a.Klasse = p.Klasse
                  INNER JOIN Gegevens g ON f.KlantNR = g.KlantNR    

       ) AS sub
GROUP BY AutoNR,
        AutoKlasse,
        dag125KM, 
        ExtraKM,
        FactuurNR,
        KlantNR,
        Begindatum,
        Einddatum,
        Borg,
        voorletters,
        tussenvoegsel,
        achternaam,
        straatnaam,
        huisNR,
        Postcode,
        rekeningNR,
        Plaats,
        KMteVEEL,
        BorgA
Select ...
       ....
GROUP  BY A.AutoNR,
          A.AutoKlasse,
          A.Prijzen.dag125KM,
          A.Prijzen.ExtraKM,
          A.Factuur.FactuurNR,
          A.Factuur.KlantNR,
          A.Factuur.Begindatum,
          A.Factuur.Einddatum,
          A.Factuur.Borg,
          Gegevens.voorletters,
          Gegevens.tussenvoegsel,
          Gegevens.achternaam,
          Gegevens.straatnaam,
          Gegevens.huisNR,
          Gegevens.Postcode,
          Gegevens.rekeningNR,
          Gegevens.Plaats,
          A.KMteVEEL,
          B.BorgA;  -- Missed