2011-12-22 9 views
1

サブクエリの構文について昼と夜を検索しましたが、私はまだ暗闇の中にいるようです。それに加えて、これを完成させるために高度なサブクエリが必要になるかもしれないようです。私はこれを私の能力の最大限に説明しようとします。SQL 2005にリンクされたAccess 2003 DBの高度なサブクエリ

私たちのチケットシステムには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つにマージしたいとも列「開始日」と私は同様にそのデータにアクセスできるように、外側のクエリで「使用された時間」を含めます。

答えて

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] 

。私は少し顧客名の疑いがあり、顧客IDについて不思議です。

+0

ありがとう、それは働いた...私はあまりにも離れていないと思う、ちょっと。 –

関連する問題