2008-12-09 9 views
13

में यूनियन का ऑर्डर और ऑर्डर जोड़ना मेरे अपने प्रश्न का उत्तर देने का यह पहला प्रयास है, क्योंकि कोई इसमें अच्छी तरह से भाग सकता है और इसलिए यह मदद की जा सकती है। फायरबर्ड का उपयोग करके, मैं यूनियन ऑल का उपयोग करके दो प्रश्नों के परिणामों को गठबंधन करना चाहता हूं, फिर किसी दिए गए कॉलम पर परिणामी आउटपुट को सॉर्ट करना चाहता हूं। कुछ की तरह:फायरबर्ड

(select C1, C2, C3 from T1) 
union all 
(select C1, C2, C3 from T2) 
order by C3 

कोष्ठकों अन्य डेटाबेस के लिए मान्य सिंटैक्स से आया है, और संघ सभी के लिए सुनिश्चित तर्क बनाने के लिए की जरूरत है (एक ऑपरेशन टेबल पर काम करने के लिए निर्धारित किया है - यानी रिकॉर्ड की एक अव्यवस्थित सेट) व्यक्तिगत रूप से आदेश देने की कोशिश मत करो। हालांकि मुझे फायरबर्ड में काम करने के लिए यह वाक्यविन्यास नहीं मिला - यह कैसे किया जा सकता है?

उत्तर

23
SELECT C1, C2, C3 
FROM (
    select C1, C2, C3 from T1 
    union all 
    select C1, C2, C3 from T2 
) 
order by C3 
+0

बहुत बहुत शुक्रिया काम नहीं करता है ... मैं बाहर काम नहीं कर सकता है कि कैसे मध्यवर्ती विचार के बिना भीतरी खंड मिलता है। – Chris

+0

ध्यान दें कि इस क्वेरी के लिए फायरबर्ड 2.x या उच्चतर – alldayremix

1

यूनियन सभी को एक दृश्य में करें (खंड द्वारा ऑर्डर के बिना), फिर ORDER BY का उपयोग करके दृश्य से चुनें।

+0

+1 "पीछे की ओर" संगतता के लिए, अन्य उत्तर में Firebird 1.5 –

12

फील्ड नामों के बराबर होने की आवश्यकता नहीं है। यही कारण है कि आप क्रम में फ़ील्ड नाम का उपयोग नहीं कर सकते हैं।
आप इसके बजाय फ़ील्ड इंडेक्स का उपयोग कर सकते हैं।

(select C1, C2, C3 from T1) 
union all 
(select C7, C8, C9 from T2) 
order by 3 
+0

लिखा गया है, इसके लिए इसे फ़ायरबर्ड 2.x की आवश्यकता है, लेकिन यदि आप कोष्ठक को हटाते हैं तो यह "पिछड़ा" संगतता के लिए फायरबर्ड 1.5 – alldayremix

2

Firebird 1.5 में यह मेरे लिए काम करता

create view V1 (C1, C2, C3) as 
    select C1, C2, C3 from T1 
    union all 
    select C1, C2, C3 from T2 

और फिर

select C1, C2, C3 from V1 order by C3 
+0

+1 में भी काम करेगा, अन्य उत्तरों नहीं फायरबर्ड में काम 1.5 –

+0

@ क्रिस यह क्रिस 'के समान जवाब है। आपको अपना हटाना चाहिए या क्रिस के जवाब में सुधार करना चाहिए;) – bluish

4

कैसे के बारे में: के रूप में

select C1, C2, C3 from T1 
union all 
select C1, C2, C3 from T2 
order by 2 

कम से कम नए Firebird संस्करण में यदि आप उपयोग करने के बजाय "संख्या" द्वारा ऑर्डर करते हैं तो यह काम करता है एक उपनाम

+0

यह फ़ायरबर्ड 1.5 में भी काम करता है – alldayremix

0

order by को एक क्वेरी पूंछ में कोई आउटपुट डेटाग्रिड पर प्रभाव डाल रहा है।

select * from (
    select first 1 
     C1 
    from T1 
    order by id desc 
) 
union all 
select * from (
    select first 1 
     C1 
    from T2 
    order by id desc 
)
संबंधित मुद्दे