2009-04-27 20 views
8

टीएसक्यूएल (जैसा कि एमएस एसक्यूएल सर्वर 2000 और 2005 में उपयोग किया जाता है) को कई जॉइन क्लॉज, एक के बाद एक दाएं, कोई कॉमा या कोष्ठक की आवश्यकता नहीं है। इसे एक्सेस में आज़माएं और यह एक फिट फेंकता है: "क्वेरी अभिव्यक्ति में सिंटेक्स त्रुटि (अनुपलब्ध ऑपरेटर) ..."टीएसक्यूएल को एमएस-एक्सेस एसक्यूएल

जो मैं Google-Land में एकत्र करने में सक्षम हूं, एक्सेस एसक्यूएल चाहता है कि समूह को समूहबद्ध करना पड़े खंड में शामिल हों। इसे पूरा करने के तरीके के बारे में अधिकतर सलाह डिज़ाइन व्यू या क्वेरी विज़ार्ड का उपयोग करना है, और एक्सेस को समझने दें कि कोष्ठक कहां रखना है (जिन्हें मानक एसक्यूएल में आवश्यक नहीं है)। समस्या यह है कि, मैं अपने एसक्यूएल को टेक्स्ट एडिटर (नोटपैड, एसएसएमएस, वीएस2005, जो कुछ भी) में करने के लिए प्रयोग किया जाता हूं, डिज़ाइन व्यू और विज़ार्ड रास्ते में आते हैं और मेरी त्वचा को क्रॉल करते हैं। कभी-कभी जादूगर कई संभावनाओं के साथ जुड़ने के बारे में बुरी धारणाएं करते हैं, और मैं इसे टीएसक्यूएल में स्वयं करने के लिए इतना उपयोग करता हूं कि मैं इसके बजाय जादूगरों को छोड़ दूंगा।

क्या ऐसा कोई उपकरण नहीं है जो TSQL को एक्सेस एसक्यूएल में परिवर्तित करेगा, या कम से कम नियमों का एक सेट कोष्ठक कहां रखा जाए?

उदाहरण:

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 सर्वर संगत सिंटेक्स (एएनएसआई 9 2) का उपयोग करना या तो मदद नहीं करता है। – JeffO

उत्तर

2

हाँ, एमएस एक्सेस गूंगा है।

मुझे नहीं लगता कि कोई मौजूद है (शायद एमएस-एसक्यूएल/टीएसक्यूएल से एमएस-एक्सेस तक जाने के लिए एक बड़ा बाजार नहीं है)। आम तौर पर, मैं डिज़ाइन व्यू का उपयोग करता हूं जो वास्तव में एक जादूगर नहीं है जहां तक ​​मेरा संबंध है। मैं मैन्युअल रूप से तालिकाओं को जोड़ता हूं, और फिर (यदि मैंने उचित संबंध जहाज आरेख नहीं बनाया है, या कुछ थोड़ा फंकी है) मैन्युअल रूप से डिजाइनर में संबंध बनाते हैं। उसके बाद, मैं 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 

(यदि आप एन भीतरी मिलती है, तो आप और शुरुआत में एन -1 खुले कोष्ठक की आवश्यकता होगी, कभी में शामिल होने के अंत पर एक, पिछले एक को छोड़कर)

+0

धन्यवाद। दुर्भाग्यवश, अब मुझे "खंड से सिंटेक्स त्रुटि" मिलती है। मुझे लगता है कि मैं डिजाइनर को एक और शॉट दूंगा। –

+0

ओह ... मुझे लगता है कि मैंने खुले कोष्ठक को गलत जगह पर रखा है। मैंने अपना उदाहरण अपडेट कर लिया है। – BIBD

+1

हां !! धन्यवाद!! यह था, साथ ही हाइफेनेटेड टेबल नाम को ब्रैकेट के साथ संलग्न करना था। मैंने यह भी पाया कि मेरा नामकरण सम्मेलन डिजाइनर को फेंक रहा था। (यह प्रत्येक तालिका के पीके को सिर्फ "आईडी" नहीं पसंद था, इसलिए इसने अपने जेनरेट किए गए जोड़ों में क्लॉज पर बहुत अधिक रास्ता डाला) –

0

यह एक्सेस में काम करता है।

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 

जैसा कि आप देख सकते हैं, शामिल होने वाली टेबल को एक साथ समूहीकृत किया जाता है।

संबंधित मुद्दे