2010-05-26 9 views
18

रुचि रखने वालों के लिए त्वरित पृष्ठभूमि,यह संभव एक मेज महत्वपूर्ण समारोह और मानकों के साथ एक और तालिका

मैं एक मास्टर विस्तार तालिका (विकल्प पुराने), प्रत्येक मास्टर रिकार्ड के लिए के बारे में 20 विवरण शामिल होने के लिए है। हमारी ओएलटीपी प्रणाली जो डेटा को सहेज रही है, हमने सहेजी गई जानकारी के प्रत्येक नए टुकड़े के लिए 21 आवेषण कर रहे थे। यह सर्वर को मार रहा था, इसलिए मैं विवरण तालिका के लिए अल्पविराम से अलग मूल्यों को प्रतिस्थापित करके यह काम करने की कोशिश कर रहा हूं। सबकुछ काम करता प्रतीत होता है, सिवाय इसके कि मैं विवरण तालिका को वापस पाने के तरीके को समझ सकता हूं। मैं टेबल मूल्यवान कार्यों का उपयोग करने की कोशिश कर रहा हूं, और यह काफी काम नहीं कर रहा है।

मैं

Select Top 100 * 
FROM dbo.fn_MarketDataDetails (MarketDataMasterID) mdd 
INNER JOIN MarketDataMaster mdm on mdm.MarketDataMasterID = mdd.MarketDataMasterID 

जाहिर की तरह कुछ कॉल करने के लिए, कि बस संकलन नहीं करता चाहते हैं।

मैं चला सकते हैं

Select Top 100 * 
FROM dbo.fn_MarketDataDetails (15425) // Assuming 15425 is a valid MarketDataMasterID 

और मैं वापस एक मेज है कि मेरे पुराने विवरण तालिका में की तरह दिखता है मिलता है।

क्या यह भी संभव है? क्या मैं कोई समझ रहा हूँ?

+0

यह मुझे स्पष्ट नहीं है कि आप यह कहां कर रहे हैं - सीएलआर या टीएसक्यूएल में? –

+0

टीएसक्यूएल। अगर मैं मास्टर रिकॉर्ड में पढ़ता हूं तो मैं आसानी से इसे सी # में कर सकता हूं, लेकिन यदि संभव हो तो मैं इसे टीएसक्यूएल में करना चाहता हूं। –

उत्तर

33

लागू ऑपरेटर चाल करना चाहिए:

SELECT * 
from MarketDataMaster 
cross apply dbo.fn_MarketDataDetails (MarketDataMasterID) 

यह अनिवार्य रूप से समारोह एक बार प्रति पंक्ति MarketDataMaster से लौटे कहता है। "क्रॉस लागू" एक आंतरिक जुड़ने की तरह काम करता है, जिसमें केवल पंक्तियां जिसके लिए फ़ंक्शन द्वारा डेटा वापस किया जाता है; बाएं बाहरी जुड़ने के समान कार्यक्षमता के लिए "बाहरी आवेदन" का उपयोग करें।

+2

बहुत बढ़िया, बहुत बहुत धन्यवाद। वास्तव में मुझे क्या चाहिए। –

+0

आपके उत्तर के लिए धन्यवाद। विशाल डेटा से निपटने के दौरान –

+0

क्रॉस लागू प्रदर्शन को मारता है। क्या इसके लिए कोई विकल्प है? – HaBo

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