0

Customer と Service を照会したい 2 つのテーブルがあります

顧客表

    cnum       lastName        Address       Phone        Comments      

     2         McKenzie        Main Street   1234567898   None
     3         Stevenson       South Street  1225448844   None
     4         Adams           North Street  1234545454   None

サービス

     IncidentNum     cnum      serviceDate      status       category      LastUpdated

     x1               2        02-21-2013       Closed       Repair        02-21-2013
     c2               2        05-12-2013       Open         Installation  05-13-2013
     d2               3        05-01-2013       Closed       Repair        05-05-2013
     f2               4        05-12-2013       Open         Repair        05-12-2013

基本的に私がやりたいことは、ステータスがクローズかオープンかに関係なく、顧客レコードごとに最新の更新でレコードを表示することです。

最後の:

    cnum    lastName     Address        Phone        Category       Last Service
     2      McKenzie     Main Street    1234567898   Installation   05-13-2013
     3      Stevenson    South Street   1225448844   Repair         05-05-2013
     4      Adams        North Street   1234545454   Repair         05-12-2013

OLEDB を使用しています。これは VB での私のプロジェクト用です。任意の入力をいただければ幸いです。前もって感謝します!

4

3 に答える 3

0

これを試してもらえますか?

select c.cnum, c.lastname, c.address,
c.phone, s.category, s.servicedate 
from customer c,service s
where c.cnum = s.cnum
group by c.cnum
having s.LastUpdated = max(s.LastUpdated)
于 2013-05-13T21:18:36.740 に答える
0

これは非常に簡単です.. * cnum * でこれらの 2 つのテーブルを結合する必要があることを確認してください.

同じタスクに次のクエリを使用できます-

select customer.cnum,
       customer.lastname,
       customer.address,
       customer.phone,
       service.category,
       service.servicedate 
  from customer,service
 where customer.cnum = service.cnum
   and service.servicedate = ( select max(serviceDate) from service service2
                                where service2.cnum = customer.cnum)

これがあなたが探しているものであることを願っています..

編集: サービス テーブルに存在しない顧客情報を表示するためのクエリの編集

select customer.cnum,
       customer.lastname,
       customer.address,
       customer.phone,
       service.category,
       service.servicedate 
  from customer left outer join service on (customer.cnum = service.cnum)
   where (service.servicedate = ( select max(serviceDate) from service service2
                                where service2.cnum = customer.cnum)
          or service.cnum is null)
于 2013-05-13T20:36:27.907 に答える
0
select distinct customer.cnum,customer.lastname,customer.address,customer.phone,
service.category,
MAX(lastupdated)as lastservice from service,customer where service.cnum=customer.cnum
and service.servicedate = ( select max(serviceDate) from service service2
                            where service2.cnum = customer.cnum)
group by customer.cnum,customer.lastname,customer.address,customer.phone,
service.category

これがあなたが探しているものであることを願っています。私はそれをテストしましたが、質問で言及した正確な出力が得られます。

于 2013-05-14T01:59:07.523 に答える