2011-10-21 13 views
58

जब मेरे SQL कथन में केवल एक ही आंतरिक शामिल था, तो यह पूरी तरह से काम करता था। मैंने दूसरी तालिका में शामिल होने का प्रयास किया, और अब मुझे एक त्रुटि मिल रही है जो कहती है कि एक वाक्यविन्यास त्रुटि है (गायब ऑपरेटर)। यहाँ क्या गलत है?एसक्यूएल एकाधिक शामिल बयान

adsFormView.SelectCommand = "SELECT * FROM [tableCourse] INNER JOIN [tableGrade] ON [tableCourse].[grading] = [tableGrade].[id] INNER JOIN [tableCourseType] ON [tableCourse].[course_type] = [tableCourseType].[id] WHERE [prefix]='" & myPrefix & "' AND [course_number]='" & myCourseNum & "'" 
+0

- क्या आता है यह देखने के लिए एक संदेश बॉक्स में चयन कमांड को प्रदर्शित करें। मुझे लगता है कि आपका जुड़ाव ठीक हो सकता है, और समस्या उद्धरण चिह्न या कुछ के साथ है। – MAW74656

+1

यदि मुझे सही ढंग से याद किया जाता है, तो एक्सेस सिंटैक्स में आप प्रत्येक परत को ब्रांडेसिस के साथ संलग्न करते हैं, इसलिए [tableCourse] INNER JOIN [tableGrade] से [tableCrse] पर प्रयास करें। [ग्रेडिंग] = [tableGrade]। [Id] (INNER JOIN [tableCourseType] [TableCourse] पर। [Course_type] = [tableCourseType]। [Id]) ' – billinkc

उत्तर

125

मल्टी-टेबल के लिए मिलती है, तो आप घोंसला करने के लिए है अतिरिक्त कोष्ठक में मिलती है:

SELECT ... 
FROM ((origintable 
JOIN jointable1 ON ...) 
JOIN jointable2 ON ...) 
JOIN jointable3 ON ... 

मूल रूप से, हर अतिरिक्त तालिका आप अतीत पहले में शामिल होने के लिए, आप एक ब्रैकेट से पहले की जरूरत है मूल 'से' टेबल, और मेलिंग 'ऑन' क्लॉज पर एक समापन ब्रैकेट।

+9

* सामान्य * एसक्यूएल के लिए उपयोग किए जाने वाले लोगों के लिए ऐसी गैर-सहज ज्ञान युक्त "सुविधा" ... – qJake

+0

यह * बिल्कुल * था जो मैं ढूंढ रहा था। यह मुझे कुछ वाक्यविन्यास बता रहा था या जुड़ा हुआ था जब यह SQL प्रबंधन स्टूडियो पर पूरी तरह से काम करेगा। – Paramone

22

एमएस एक्सेस (विशेष रूप से, जेट/एसीई) को एकाधिक जोड़ों के साथ ब्रांड्स की आवश्यकता होती है। प्रयास करें:

adsFormView.SelectCommand = _ 
    " SELECT * FROM ([tableCourse] " & _ 
    " INNER JOIN [tableGrade] " & _ 
    "  ON [tableCourse].[grading] = [tableGrade].[id]) " & _ 
    " INNER JOIN [tableCourseType] " & _ 
    "  ON [tableCourse].[course_type] = [tableCourseType].[id] " & _ 
    " WHERE [prefix]='" & myPrefix & "'" & _ 
    " AND [course_number]='" & myCourseNum & "'" 
+0

" विशेष रूप से, जेट डीबी इंजन "- सत्य नहीं: यह इंजन के एक्सेस डेटाबेस इंजन (एसीई) संस्करण पर लागू होता है। – onedaywhen

+0

मेरा मुद्दा यह था कि कोष्ठक के लिए आवश्यकता डीबी * इंजन * से आता है, न कि * आवेदन *। लेकिन आप सही हैं, आवश्यकता एसीई/एडीई/जो भी-एमएस-कॉलिंग-इन-दिनों में भी लागू होती है। मैंने तदनुसार अपना जवाब अपडेट किया। – mwolfe02

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