SQL 2005链接Access 2003数据库高级子查询使用PHP


SQL 2005 linked Access 2003 DB advanced subquery using PHP

我日夜搜索关于子查询的语法,我似乎仍然对它们一无所知。最重要的是,似乎我可能需要更多的高级子查询来完成此操作。我将尽我所能解释这件事。

我们使用Access DB作为我们的票务系统(我知道),它建于1997年。后台使用的是SQL Server 2005。我目前正在用PHP编写一个脚本,当他们提前购买的块时间降至零以下时,向客户发送电子邮件。凭借我在SQL和ODBC方面的一点编码经验,我能够创建两个目前可用的查询。我需要添加更多的数据到这些查询,但我几乎在我的极限。

此查询将提取所有与我们预付时间的不同客户(块时间/事件代码201)

$query1 = "SELECT [Customer Name], MAX([Incident #])
           FROM [Incidents]
           WHERE [Event Code] = 201
           GROUP BY [Customer Name]
           ORDER BY [Customer Name] ASC";

因为我对子查询的知识有限,所以我有另一个查询,必须找到是否有一个较新的"事件#",其"事件代码"为203。如果有,请不要包含它们。

while( odbc_fetch_row( $query1 ))
{
   $query2 = "SELECT [Customer Name]
              FROM [Incidents]
              WHERE [Customer Name] = '$customer_name'
              AND [Incident #] > $incident_num
              AND [Event Code] = 203";
   if( !odbc_fetch_row( $query2 )) {
      //list customers
   }
}

这些查询工作就像一个魅力,但是,我想把它们合并成一个,还包括列'开始日期'和'使用的时间'在外部查询,以便我可以访问该数据,以及

如何:

   SELECT [Customer Name], MAX([Incident #])
   FROM [Incidents] a
   WHERE [Event Code] = 201
   AND  [Customer Name] Not IN 
      (SELECT [Customer Name]
      FROM [Incidents] b
      WHERE b.[Customer Name] = a.[Customer Name]
      AND b.[Incident #] > a.[Incident #]
      AND [Event Code] = 203)
   GROUP BY [Customer Name]

不需要order by和group by。我对客户名有点怀疑,对客户id也很好奇。