2012-06-13 12 views
6

कहते हैं कि मैं एक मेज "tblItems" है:एक लगातार पंक्ति एसक्यूएल क्वेरी के परिणाम को जोड़ने एमएस एक्सेस

*ID* |  *Name* 
1  | First Item 
2  | Second Item 

और मैं इस एक के रूप में एक ड्रॉप-डाउन में भर जाएगी करना चाहते हैं। मैं एक पंक्ति कैसे जोड़ना होगा:

ALL  | SHOW ALL 

एक क्वेरी के साथ

*ID* |  *Name* 
1  | First Item 
2  | Second Item 
ALL  | SHOW ALL 

बनने के लिए कॉम्बो बॉक्स के लिए Row Source में रखने के लिए? मैं यह करने के लिए प्रवेश वाक्य रचना ढूँढने में सक्षम नहीं किया गया ..

AFAIK, मैं

SELECT ID, Name FROM tblItems 
UNION 
SELECT 0, "All" FROM SOME.SYSTEM.DUMMY.TABLE 

के समान वाक्यविन्यास मैं नहीं मिल सकता है क्या कि डमी तालिका के पहुँच 'संस्करण है की जरूरत है। मैं वास्तव में एक पंक्ति के लिए एक पंक्ति को स्टोर करने के लिए एक अलग टेबल नहीं चाहता हूं ... लेकिन जो मैं पढ़ रहा हूं उससे मुझे शायद करना होगा।

+1

http: // stackoverflow देखें।कॉम/प्रश्न/3486299/dblookupcombobox-has-a-null-row/3486591 # 3486591 – Fionnuala

+0

एक ही पंक्ति का उपयोग एक सिंगल-पंक्ति डमी टेबल बनाने से तेज है, और इसका संदर्भ है? आप क्वेरी के दोनों हिस्सों के लिए समान 'टेबलए' का उपयोग करके दिखाते हैं, लेकिन यदि टेबलए बड़ा है, तो क्या यह समर्पित डमी टेबल का उपयोग करने के लिए अधिक कुशल है? – StuckAtWork

+0

आप किसी भी तालिका को चुन सकते हैं जिसे हटाया नहीं जाने वाला गारंटी है। हालांकि, मुझे नहीं लगता कि एक बहुत बड़ी मेज एक combobox के लिए उपयुक्त है, तो यह कुछ हद तक सैद्धांतिक प्रतीत होता है। – Fionnuala

उत्तर

7

आप कुछ इस तरह कर सकता है:

select ID, Name 
from tblItems 
union all 
select 'ALL', 'SHOW ALL' 

यदि आप हमेशा यह नीचे पर दिखाने के लिए चाहता था, आप थोड़ा और अधिक जटिल भी प्राप्त करना होगा।

प्रति टिप्पणियां, मुझे एहसास हुआ कि एक्सेस कथन का FROM खंड के बिना समर्थन नहीं करता है, जो परेशान है।

create table tblAll(ID varchar(15), Name varchar(30)); 
insert into tblAll(ID, Name) values ('ALL', 'SHOW ALL'); 

तो आप कर सकते हैं:: एक वैकल्पिक हल एक मेज tblAll (सिंटेक्स संशोधन की आवश्यकता हो सकती है) बनाने के लिए किया जाएगा

select ID, Name 
from tblAll 
union all 
select str(ID) as ID, Name 
from tblItems 
+0

इसे काम करने के लिए आपको अपनी 'आईडी' को एक स्ट्रिंग मान के रूप में डालने की आवश्यकता हो सकती है, मुझे यकीन नहीं है कि MSAccess कैसे इसे संभालता है। –

+1

मुझे एक त्रुटि मिलती है जिसमें कहा गया है "क्वेरी इनपुट में कम से कम एक तालिका या क्वेरी होनी चाहिए"। मेरे पास 'पंक्ति स्रोत' है जो 'क्वेरी 2' पर इशारा करता है जिसमें आपका उपरोक्त वाक्यविन्यास शामिल है। मैंने अपना कोड सरलीकृत करने का प्रयास किया है और मुझे इस वाक्यविन्यास को एक्सेस के लिए काम नहीं मिल रहा है? मैंने इसे सीधे क्वेरी 2 विंडो से भी कोशिश की है (डेटाशीट दृश्य एक ही त्रुटि फेंकता है) – StuckAtWork

+0

@StuckAtWork: यह दुर्भाग्यपूर्ण है, और एक और कारण है कि एक वास्तविक डेटाबेस सिस्टम के लिए एक्सेस को भ्रमित न करें। मैंने अपना जवाब अपडेट कर लिया है। –

2

आप UNION ALL उपयोग कर सकते हैं, हालांकि, आप स्थिरांक और के बीच एक बेमेल है कॉलम ("सभी" एक पूर्णांक नहीं है)। आप कुछ ऐसा कर सकते हैं:

select ID, NAME from tblItems 
union all 
select 0, 'SHOW ALL' 

आवेदन पक्ष पर, 0 की आईडी को "सभी दिखाएं" के रूप में समझें। या, आईडी को एक स्ट्रिंग में कनवर्ट करें।

select str(ID), NAME from tblItems 
union all 
select 'ALL', 'SHOW ALL' 
+0

मुझे लगता है कि एक्सेस को 'सब कुछ दिखाएं' के बाद एक टेबल की आवश्यकता है .. यह मुझे आवश्यक वाक्यविन्यास है। यह "कोई तालिका या क्वेरी में क्वेरी" की त्रुटि फेंकता है। मैंने अन्य डीबी को "SYS.DUMMY" प्रकार की चीजों का उपयोग निरंतर मानों के लिए तालिका नाम के रूप में देखा है, लेकिन इसे एक्सेस के लिए नहीं मिल रहा है। – StuckAtWork

+0

@StuckAtWork कृपया ऊपर मेरा लिंक देखें। – Fionnuala

6

मैं क्या एक SELECT TOP 1 बयान का उपयोग करें और मौजूदा तालिका नाम का उपयोग है, इसलिए यह इस तरह दिखता है:

SELECT ID, Name FROM tblItems 
UNION 
SELECT TOP 1 'ALL', 'SHOW ALL' FROM tblItems 

अपने मौजूदा तालिका से चयन के साथ आप एकल पंक्ति दे देंगे कि । आप TOP 1 पंक्ति के लिए इच्छित किसी भी तालिका का उपयोग कर सकते हैं।

+0

यह पूरी तरह से काम किया! धन्यवाद @ सेन सटन –

2

बस एमएस एक्सेस में काम करने के लिए जेरेमी होलोवाक्स के जवाब को ठीक करना चाहते हैं। इस तरह आप एक ही टेबल का उपयोग कर सकते हैं और डमी टेबल नहीं बना सकते हैं।

SELECT ID, Name 
FROM tblItems 
UNION ALL 
SELECT TOP 1 'ALL', 'SHOW ALL' 
FROM tblItems 
1

मन आप निम्नलिखित तभी काम करता है वहाँ तालिका में किसी भी पंक्तियों हैं, तो आप एक खाली टेबल मिल गया है, तो यह काम नहीं करेगा।

SELECT ID, Name 
FROM tblItems 
UNION ALL 
SELECT TOP 1 'ALL', 'SHOW ALL' 
FROM tblItems