1

incorrect syntax near asこれを実行すると受信しinner joinます。理由を特定する必要があり、できない。これが間違っている場所を指摘してください:

関連する SQL コード

from 

(   
    (
        (dbo.task inner join dbo.projwbs on dbo.task.proj_id=dbo.projwbs.wbs_id) as tmptb1
    inner join
        (dbo.task inner join dbo.project on dbo.task.proj_id=dbo.project.proj_id) as tmptb2
        on dbo.tmptb1.proj_id=dbo.tmptb2.proj_id as dbo.tmptb3
    )
    inner join
(
        (dbo.task inner join dbo.rsrc on dbo.task.rsrc_id=dbo.rsrs.rsrc_id) as tmptb4)
        on tmptb3.proj_id=tmptb4.proj_id
    )
4

2 に答える 2

3

私は何かが欠けているかもしれません...しかし、これらはすべてinner joins.

from 
    dbo.task t
    inner join dbo.projwbs pw on t.proj_id=pw.wbs_id 
    inner join dbo.project p on t.proj_id=p.proj_id
    inner join dbo.rsrc r on t.rsrc_id=r.rsrc_id
于 2013-02-04T20:10:34.410 に答える
3

コードに括弧が多すぎるように見えますが、何をしているのかを正確に伝えるのは困難です。したがって、次のようなものを使用するように変更します。

select *
from 
(
    select *
    from
    (   
        select *
        FROM dbo.task 
        inner join dbo.projwbs 
            on dbo.task.proj_id=dbo.projwbs.wbs_id
    ) as tmptb1
    inner join
    (
        select *
        from dbo.task 
        inner join dbo.project 
            on dbo.task.proj_id=dbo.project.proj_id
    ) as tmptb2
        on tmptb1.proj_id=tmptb2.proj_id
) as tmptb3
inner join
(
    select *
    from dbo.task 
    inner join dbo.rsrc 
        on dbo.task.rsrc_id=dbo.rsrs.rsrc_id
) as tmptb4
    on tmptb3.proj_id=tmptb4.proj_id

を、各テーブルから必要な列に置き換えSELECT *ます。

データを取得するためにこれらすべてのサブクエリを実行している理由がわかりません。次を使用できるはずです。

select *
from dbo.task t
inner join dbo.projwbs w
  on t.proj_id=w.wbs_id
inner join dbo.project p
  on t.proj_id=p.proj_id
inner join dbo.rsrc r
  on t.rsrc_id = r.rsrc_id
于 2013-02-04T20:07:59.710 に答える