0

私は自分自身でクエリに参加していますが、私のコードはase isqlで正常に動作しています。しかし、Access 2007 で使用したい場合、次のエラーが表示されます。

 select TT.name, TT.lastname, max(amount) as maxsalecurrentweek
 from sales
 inner join
 (select s1.id_employee, e.name, e.lastname, e.address, e.age, e.id_employee 
 from employee e
 join sales s1 on e.id_emplyoee = s1.id_employee
 where 
 some conditions here) as TT
 on sales.id_employee = TT.id_employee
 group by
 TT.name, TT.lastname

元のコードでは、内部クエリといくつかの where 条件でさらに多くのテーブルを結合しています。しかし、上記のコードは私が何をするかを示しているはずです。

テーブルに自分で参加する方法がアクセスの問題のようです。正しいsysntaxisとは何か知っている人はいますか? または、access/JET/ACE がこの内部結合と it self アプローチをサポートしている場合は?

元のコードは次のとおりです。

select max(tort140.BEL_GRLAG_AP) as MaxPensjonGr, TT.IDE_KUNDE_PRSNR,
TT.DAT_KUNDE_FOEDT_NUM, TT.AvtaleID, TT.Orgnr, TT.Arbeidsgiver, 
TT.Sivilstatus, TT.Polisestatus, TT.Årslønn from tort140 

    inner join 

        (select distinct tort128.NUM_AVTALE_ID as AvtaleID,
         tort009.IDE_ARBGIV_NR as Orgnr,
         tort134.NVN_ARBGIV as Arbeidsgiver,
         tort127.DAT_KUNDE_FOEDT_NUM as DAT_KUNDE_FOEDT_NUM,
         tort127.IDE_KUNDE_PRSNR as IDE_KUNDE_PRSNR,
         tort001.STA_SIVILSTATUS as Sivilstatus,
         tort128.typ_status as Polisestatus, 
         tort128.rte_polisegrad as Polisegrad,
         tort140.BEL_LOENN_AAR as Årslønn,
         tort138.IDE_SEKV_TORT138"
         from tort140 left join (tort138 join (tort128 join (tort134 join (tort009 join (tort001 join tort127 
         on tort127.DAT_KUNDE_FOEDT_NUM=tort001.DAT_KUNDE_FOEDT_NUM and tort127.IDE_KUNDE_PRSNR=tort001.IDE_KUNDE_PRSNR)
         on tort127.DAT_KUNDE_FOEDT_NUM=tort009.DAT_KUNDE_FOEDT_NUM and tort127.IDE_KUNDE_PRSNR=tort009.IDE_KUNDE_PRSNR)
         on tort009.IDE_ARBGIV_NR=tort134.IDE_ARBGIV_NR)
         on tort128.IDE_SEKV_TORT127 = tort127.IDE_SEKV_TORT127)
         on tort128.IDE_SEKV_TORT128 = tort138.IDE_SEKV_TORT128)
         on tort140.IDE_SEKV_TORT138 = tort138.IDE_SEKV_TORT138)

         where tort128.NUM_AVTALE_ID = '102356' and tort128.DAT_GYLDIG_FOM <= 20120101
            and (tort128.DAT_GYLDIG_TOM >= 19520000 or tort128.DAT_GYLDIG_TOM is null
            and tort128.DAT_HISTORISK is null and tort128.TYP_STATUS= 'akt' and tort127.DAT_KUNDE_FOEDT_NUM >= 19650000
            and tort127.DAT_KUNDE_FOEDT_NUM <= 19550000 and tort127.DAT_TERMINERT is null and tort127.DAT_REGISTRERT<= 19550000
            and tort009.DAT_SLUTT is null and tort134.DAT_HISTORISK is null
            and tort138.DAT_AKSJON=(select max(p.DAT_AKSJON) from tort138 p where 1=1 and p.IDE_SEKV_TORT128=tort128.IDE_SEKV_TORT128)

          ) as TT

          on TT.IDE_SEKV_TORT138 = tort140.IDE_SEKV_TORT138

Group by TT.IDE_KUNDE_PRSNR, TT.DAT_KUNDE_FOEDT_NUM, TT.AvtaleID, TT.Orgnr,
TT.Arbeidsgiver, TT.Sivilstatus, TT.Polisestatus, TT.Årslønn from tort140 

内部クエリは、access 2007 で問題なく動作します。内部結合を記述したときにエラー メッセージが表示されました。このクエリはアクセスに適していると思いますか?? ブレーキか何かが欠けていますか?

4

1 に答える 1

0

MS Access に結合タイプを追加する必要があります。結合だけでは機能しません。

from employee e
 INNER join sales s1 on e.id_emplyoee = s1.id_employee

コメントごとに編集します。上記の行は投稿された SQL から取得され、次のように収まります。

select TT.name, TT.lastname, max(amount) as maxsalecurrentweek
 from sales
 inner join
 (select s1.id_employee, e.name, e.lastname, e.address, e.age, e.id_employee 
 from employee e
 INNER join sales s1 on e.id_emplyoee = s1.id_employee
 where 
 some conditions here) as TT
 on sales.id_employee = TT.id_employee
 group by
 TT.name, TT.lastname
于 2012-08-13T16:39:33.263 に答える