2011-12-22 65 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