2011-12-22 66 views
1

我已经搜索了白天和黑夜的子查询的语法,我似乎仍然处于黑暗中。最重要的是,似乎我可能需要更多高级子查询才能完成此操作。我会尽我所能解释这一点。SQL 2005链接使用PHP的Access 2003 DB高级子查询

我们使用Access数据库作为我们的票务系统(我知道),它在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 
    } 
} 

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

回答

1

如何:

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] 

你不与组需要秩序。我对客户的名字有点怀疑,并且对客户的身份感到疑惑。

+0

谢谢,这工作...我想我不是太遥远,嘿。 – 2012-01-10 04:23:30