2010-07-16 15 views
9

क्या हमारे पास एक ही तालिका के लिए एकाधिक उपनाम नाम हो सकते हैं?तालिका के लिए एकाधिक उपनाम नाम

+0

आप क्यों चाहेंगे? क्या आपके पास एक विशिष्ट क्वेरी है जो काम नहीं करती है? –

+0

आपको इसकी आवश्यकता के लिए क्या करना है? –

+1

स्वयं भूमिकाएं या टेबल जो कई भूमिकाओं में रहते हैं। उत्तरार्द्ध का एक उदाहरण एक दिनांक आयाम तालिका हो सकती है जो उस पर कई तिथियों के साथ एक तथ्य तालिका में शामिल हो जाती है। – ConcernedOfTunbridgeWells

उत्तर

11

हां। आप च आप एक तालिका एक पदानुक्रम भंडारण है उदाहरण के लिए एक self join, के लिए ऐसा करने की जरूरत:

:

create table Foo (
    FooID int 
    ,ParentFooID int 
    ,[columns] 
) 

आप एक माता पिता के बच्चे की तरह एक प्रश्न के साथ एक विशेष स्थिति को संतुष्ट पाने के लिए शामिल होने के लिए कर सकते हैं

Select b.* 
    from Foo a 
    join Foo b 
    on a.FooID = b.ParentFooID 
    and [some condition filtering a] 
+1

+1! –

+0

लेकिन यह प्रदर्शन को प्रभावित करेगा या नहीं? –

+0

क्वेरी ऑप्टिमाइज़र को शामिल होने के लिए आवश्यक कुछ भी करना होगा। उदाहरण के लिए, यदि तालिका बड़ी है और ParentFooID पर एक अनुक्रमणिका है, तो इसे शायद FooID - ParentFooID में शामिल होने के लिए इंडेक्स लुकअप करना होगा। मैच करने में हमेशा कुछ संसाधन शामिल होंगे। – ConcernedOfTunbridgeWells

3

नहीं, एक ही टेबल पर नहीं, लेकिन आप एक ही टेबल को दो बार चुन सकते हैं और प्रत्येक को अलग-अलग उपनाम दे सकते हैं।

SELECT alias1.*, alias2.* 
FROM mytable alias1, mytable alias2 

यह आपको एक ही क्वेरी के भीतर एक ही उद्देश्य के लिए एक ही तालिका का उपयोग करने की अनुमति देगा।

+0

लेकिन यह प्रदर्शन को प्रभावित करेगा या नहीं? –

+0

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

+0

चूंकि क्रिस की क्वेरी में कोई शर्त नहीं है (अंतर्निहित या अन्वेषण) एक कार्टशियन शामिल होने की अपेक्षा की जाएगी - यानी। तालिका में प्रत्येक पंक्ति को एक ही तालिका में सभी पंक्तियों से जोड़ा जाएगा, इसलिए यदि आपके पास तालिका में 20 पंक्तियां थीं तो आपका परिणाम 400 पंक्तियां होगी! यह दो गुना ज्यादा काम से भी बदतर है। हालांकि, यह उपनाम नहीं है जो काम कर रहे हैं - यह कार्टशियन शामिल है। –

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