SQL 2005 使用 PHP 链接 Access 2003 DB 高级子查询
Posted
技术标签:
【中文标题】SQL 2005 使用 PHP 链接 Access 2003 DB 高级子查询【英文标题】:SQL 2005 linked Access 2003 DB advanced subquery using PHP 【发布时间】:2011-12-22 18:26:37 【问题描述】:我日夜搜索子查询的语法,但我似乎仍然对它们一无所知。最重要的是,似乎我可能需要更多高级子查询来完成此操作。我会尽力解释这一点。
我们的票务系统(我知道)使用 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
这些查询就像一个魅力,但我想将它们合并为一个,并在外部查询中包含“开始日期”和“使用时间”列,以便我也可以访问该数据。
【问题讨论】:
【参考方案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]
您不需要 order by 和 group by。我有点怀疑客户名称,想知道客户 ID。
【讨论】:
谢谢你,这很有效......我想我离得不远了,呵呵。以上是关于SQL 2005 使用 PHP 链接 Access 2003 DB 高级子查询的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 2005 查询多个Access 数据库?
Access 2000 连接到 SQL Server 2005
使用 MS Access 2003 连接到 SQL Server 2005