2009-04-27 22 views
8

TSQL(MS SQL Server 2000および2005で使用されている)は、複数のJOIN句を1つずつ順番に並べ替えることができ、カンマまたは括弧は不要です。 Accessでこれを試してみて、それがフィットスロー:私はGoogleの-土地でアウト集めることができました何より 「クエリ式の構文エラー(演算子がありません)...」TSQLからMS-Access SQLへの変換

を、アクセスSQLは、グループに括弧を望んでいますJOIN節。これを達成する方法に関するほとんどのアドバイスは、デザインビューまたはクエリウィザードを使用して、Accessに(標準SQLでは必須ではない)かっこを入れる場所を特定させることです。問題は、私はテキストエディタ(メモ帳、SSMS、VS2005、何でも)を使用して、設計ビューとウィザードが途中でスキンクロールを行うことに慣れていることです。ウィザードによっては、複数の可能性がある場合に参加する必要があるということについて、間違った前提があることがあります。私はTSQLでそれをやり遂げるのに慣れています。

TSQLをAccess SQLに変換するツール、またはかっこを入れる場所の少なくとも1組のルールはありませんか?

例:

SELECT ... 
FROM Participant PAR 
    INNER JOIN Individual IND 
     ON PAR.APETSID = IND.APETSID 
    INNER JOIN Ethnicity ETH 
     ON IND.EthnicityID = ETH.ID 
    INNER JOIN Education EDU 
     ON IND.EducationID = EDU.ID 
    INNER JOIN Marital MAR 
     ON IND.Marital = MAR.ID 
    INNER JOIN Participant-Probation PXP 
     ON PAR.ID = PXP.ParticipantID 
    INNER JOIN Probation PBN 
     ON PXP.ProbationID = PBN.ID 
    INNER JOIN Class-Participant CXP 
     ON PAR.ID = CXP.ParticipantID 
    INNER JOIN Class CLS 
     ON CXP.ClassID = CLS.ID 
    INNER JOIN Official OFR 
     ON PAR.ReferringPO = OFR.ID 
    INNER JOIN Participant-Official PXO 
     ON PAR.ID = PXO.ParticipantID 
    INNER JOIN Official OFA 
     ON PXO.OfficialID = OFA.ID 
+0

SQL Server Compatible Syntax(ANSI 92)を使用してもヘルプではないことが判明しました。 – JeffO

答えて

2

YAH、MS-Accessは、ダムです。

MS-SQL/TSQLからMS-Accessに行く巨大な市場ではないと思います。通常は、デザインビューを使用していますが、これは私が関心を持つ限り、実際にはウィザードではありません。私は手動でテーブルを追加してから、適切なリレーションシップダイアグラムを作成していない場合、または少し不気味ですが、デザイナーでリレーションシップを手動で作成します。その後、SQLビューでクエリをチェックし、必要に応じて修正します。

例の場合(指定したとおり)、おそらくかっこが必要なため、手動で追加する必要があります。 ;

SELECT ... 
FROM (((Participant PAR 
    INNER JOIN Individual IND 
     ON PAR.APETSID = IND.APETSID) 
    INNER JOIN Ethnicity ETH 
     ON IND.EthnicityID = ETH.ID) 
    INNER JOIN Education EDU 
     ON IND.EducationID = EDU.ID) 
    INNER JOIN Marital MAR 
     ON IND.Marital = MAR.ID 

(最後のものを除く。あなたはN内部結合している場合、あなたは最初にN-1開き括弧を必要とし、参加のこれまでの最後の1になる):あなたは、おそらくこのような何かをしたいです

+0

ありがとうございます。残念ながら、私は "構文エラーFROM句"を取得します。私はデザイナーに別のショットを与えるだろうと思う。 –

+0

おっと...私は間違った場所にカッコを入れていると思います。私は私の例を更新しました。 – BIBD

+1

はい!ありがとう!!それは、ハイフネーションされたテーブル名を角カッコで囲むとともに、それでした。私は私の命名規則がデザイナーを捨てていることも発見しました。 (それはすべてのテーブルのPKがちょうど "ID"であるのが好きではなかったので、生成された結合の節にあまりにも多くの句を挿入しました) –

0

これはAccessで動作します。

SELECT * 
FROM (((Individual AS IND 

INNER JOIN Ethnicity AS ETH 
    ON IND.EthnicityID = ETH.ID) 

INNER JOIN Education AS EDU 
    ON IND.EducationID = EDU.ID) 

INNER JOIN Marital AS MAR 
    ON IND.Marital = MAR.ID) 

INNER JOIN (((((((Participant AS PAR 

    INNER JOIN Official AS OFR 
     ON PAR.ReferringPO = OFR.ID) 

    INNER JOIN [Class-Participant] AS CXP 
     ON PAR.ID = CXP.ParticipantID) 

    INNER JOIN Class AS CLS 
     ON CXP.ClassID = CLS.ID) 

    INNER JOIN [Participant-Official] AS PXO 
     ON PAR.ID = PXO.ParticipantID) 

    INNER JOIN Official AS OFA 
     ON PXO.OfficialID = OFA.ID) 

    INNER JOIN [Participant-Probation] AS PXP 
     ON PAR.ID = PXP.ParticipantID) 

    INNER JOIN Probation AS PBN 
     ON PXP.ProbationID = PBN.ID) 

ON IND.APETSID = PAR.APETSID 

ご覧のとおり、結合するテーブルはグループ化されています。