简体   繁体   English

ms access 2010中嵌套SQL语句中缺少字段

[英]missing field in nested SQL statement in ms access 2010

The following MS Access 2010 query only outputs values for FirstName, HomePhone, and ClientNumber. 以下MS Access 2010查询仅输出FirstName,HomePhone和ClientNumber的值。 It is not outputting any values for LastName. 它不输出LastName的任何值。

Can anyone show me how to change it so that it outputs values for LastName also? 任何人都可以告诉我如何更改它,以便它也输出LastName的值?

SELECT
  ActiveCustomers.FirstName
, ActiveCustomers.LastName
, tblClientAddress.HomePhone
, ActiveCustomers.ClientNumber
FROM (
  SELECT
    Clients.ClientNumber
  , Clients.FirstName
  , Clients.LastName (
      SELECT COUNT(ReferralDate) FROM IntakeTable 
      WHERE Clients.ClientNumber = IntakeTable.ClientNumber
      AND Len(ReferralDate & '') > 0
    ) AS IntakeCount
  , (
    SELECT COUNT(ExitDate)
    FROM ExitTable
    WHERE Clients.ClientNumber = ExitTable.ClientNumber
    AND Len(ExitDate & '') > 0
  ) AS ExitCount
  FROM Clients
) AS ActiveCustomers
INNER JOIN tblClientAddress
ON ActiveCustomers.ClientNumber = tblClientAddress.ClientNumber
WHERE ActiveCustomers.IntakeCount > [ExitCount]
AND tblClientAddress.CurrentResidence = True;

You appear to be missing a comma after Clients.LastName . 您似乎在Clients.LastName之后缺少逗号。 Try: 尝试:

SELECT ActiveCustomers.FirstName, ActiveCustomers.LastName, tblClientAddress.HomePhone, ActiveCustomers.ClientNumber
FROM 
       (SELECT Clients.ClientNumber, 
               Clients.FirstName, 
               Clients.LastName,
               (SELECT COUNT(ReferralDate) FROM IntakeTable WHERE Clients.ClientNumber = IntakeTable.ClientNumber AND Len(ReferralDate & '') > 0) AS IntakeCount,
               (SELECT COUNT(ExitDate) FROM ExitTable WHERE Clients.ClientNumber = ExitTable.ClientNumber AND Len(ExitDate & '') > 0) AS ExitCount 
        FROM Clients) AS ActiveCustomers
INNER JOIN tblClientAddress ON ActiveCustomers.ClientNumber = tblClientAddress.ClientNumber 
WHERE (((ActiveCustomers.IntakeCount)>[ExitCount]) AND 
       ((tblClientAddress.CurrentResidence)=True));

EDIT: 编辑:

It seems likely that: 似乎很可能:

  • You have a many-to-one (or one-to-many) relationship between Clients and tblClientAddress , and you have two records on the "many" side. 您在ClientstblClientAddress之间存在多对一(或一对多)关系,并且“多”端有两条记录。 If you are getting duplicate records, you could add a DISTINCT or a GROUP BY , 如果您获得重复记录,可以添加DISTINCTGROUP BY

And/Or: 和/或:

  • That the (SELECT COUNT( subqueries are somehow messing up their parent query, and need to be modified so that they can go into their parent query's FROM clause with an Inner Join , eg: 那个(SELECT COUNT(子查询以某种方式搞乱了他们的父查询,需要进行修改,以便他们可以通过Inner Join进入他们的父查询的FROM子句,例如:

    (SELECT ClientNumber, COUNT(ReferralDate) as IntakeCount FROM IntakeTable WHERE Len(ReferralDate & '') > 0 GROUP BY ClientNumber) AS qryIntakeCount

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM