سؤال

يسمح Tsql (كما هو مستخدم في MS SQL Server 2000 و 2005) بنود مشتركة متعددة، واحدة مباشرة بعد الآخر، لا تحتاج إلى فواصل أو قوسين. جرب هذا في Access وطرق خطأ بناء الجملة (مشغل مفقود) في تعبير الاستعلام ... "

مما كنت قادرا على التجمع في Google-Land، فإن Access SQL يريد قوسين لجماعة جمل الانضمام. معظم النصائح حول كيفية تحقيق ذلك هي استخدام طريقة عرض التصميم أو معالج الاستعلام، والسماح للوصول إلى معرفة مكان وضع الأقواس (التي ليست مطلوبة في SQL القياسية). المشكلة هي، أنا معتاد جدا على القيام ب SQL الخاص بي في محرر نصوص (Notepad، SSMS، VS2005، أيا كان) أن طريقة عرض التصميم والمعالج تحصل على الطريق وجعل بشرتي الزحف. في بعض الأحيان تجعل المعالجات افتراضات سيئة حول ما يجب الانضمام إليه إذا كان هناك إمكانيات متعددة، وأنا معتاد على القيام بذلك بنفسي في TSQL، فأنا أفضل ترك المعالجات منه.

ليست هناك أداة تقوم بتحويل TSQL إلى 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
    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
هل كانت مفيدة؟

المحلول

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 inner ourins، فستحتاج إلى N-1 Open-Parenthesis في البداية، وواحدة على نهاية من أي وقت مضى من الانضمام؛ باستثناء آخر واحد)

نصائح أخرى

هذا يعمل في الوصول.

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

كما ترون، يتم تجميع الجداول المراد انضمامها معا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top