Thursday, 15 July 2010

sql server - Optional logical OR parameters for SQL Query -


मेरे पास एक SQL Server 2008 तालिका है जिसमें निम्न संरचना और डेटा है

  INSERT [ उत्पाद [विवरण] ([उत्पादकता], [उत्पादनाम], [विक्रेता], [श्रेणी]) मूल्य (1, 'दूध', 'वी 1', 'भोजन') [उत्पादक विवरण] ([उत्पादकता], [उत्पादनाम], [ (उत्पादक), [उत्पादक], [विक्रेता], [श्रेणी]) मूल्य (3, 'विक्रेता', [श्रेणी]) मूल्य (2, 'दूध', 'वी 2', 'भोजन') [उत्पाद]   

मैं निम्न खोज मापदंडों के साथ मेरे खोज मापदंड में लॉजिकल या लागू करना चाहता हूं

  DECLARE @ProductName VARCHAR (10) DECLARE @Vendor VARCHAR (10)   

अपेक्षित परिणाम विभिन्न परिदृश्यों में नीचे सूचीबद्ध हैं।

  --- मामले 1 SET @ProductName = नल सेट @ वेंडर = नल - अनुमानित उत्पाद आईडी = 1,2,3 --- मामले 2 SET @ उत्पाद का नाम = 'दूध' SET @ विक्रेता = 'वी 2' - अनुमानित उत्पाद आईडी = 1,2,3 --- मामला 3 SET @ उत्पादक नाम = नल सेव @ वेंडर = 'वी 2' - अनुमानित उत्पाद आईडी = 2,3 --- मामले 3 एसईटी @ उत्पाद का नाम = ' केले 'SET @ विक्रेता = नल - अनुमानित उत्पाद आईडी = 3 --- मामला 5 SET @ उत्पादक नाम =' केले 'SET @ विक्रेता =' वी 2 '- अनुमानित उत्पाद आईडी = 2,3   <पी > एकमात्र समाधान, मैं अब सोच सकता हूं, इस प्रकार निम्न प्रश्नों को चलाने के लिए है I  
  1. यदि दोनों @ProductName और @ विक्रेता हैं, तो NULL , सभी उत्पादों का चयन करें

  2. यदि @ProductName और @ विक्रेता गैर-रिक्त हैं, तो दो चुनिंदा प्रश्नों का एक संयोजन बनाएं (

  3. यदि @ProductName है @ उत्पादक नाम मान के आधार पर मूल्य और क्वेरी > नल और @ विक्रेता है NULL , @ProductName मान पर आधारित क्वेरी परिणाम का चयन करें।

  4. यदि @ProductName शून्य है और @ विक्रेता है नहीं नल , @endor पर आधारित क्वेरी परिणाम का चयन करें < / कोड> मूल्य।

    क्या कोई बेहतर उपाय है, जो कि एक तर्क में किया जा सकता है जैसे तार्किक और?

    संदर्भ:

    1. यह मानक विधि से जटिल है । उसमें, जब आप परिभाषित होते हैं, तब आप प्रतिच्छेदन लेते हैं:

        जहां (@ProductName = ProductName) या (@Vendor = VendorName) या (@ProductName शून्य है और @ विक्रेता नल है) < / Code>  

      ओपी द्वारा अद्यतन

      यह विचार है:

      जांचें कि कोई भी रिकॉर्ड तालिका में मापदंड को लाइन 1 में संतुष्ट करें

      जांचें कि तालिका में से कोई रिकॉर्ड पंक्ति 2 में मापदंड को संतुष्ट करें

      ... ।

      ....

      जांचें कि क्या सभी निविष्ट शून्य हैं (यानी, खोज किसी भी इनपुट के बिना)

      नोट : यदि सभी इनपुट पैरामीटर शून्य हैं, तो तालिका में सभी रिकॉर्ड परिणाम में लौटा दिए जाएंगे।

      क्यों?

      क्योंकि, तालिका में सभी रिकॉर्ड इस मानदंड को पूरा करेंगे। (डेटा को किसी भी मानदंड से मिलने की जरूरत नहीं है। डेटा के बारे में कोई तुलना नहीं है - यह मापदंडों के बारे में है)। इसलिए यदि अंतिम पंक्ति कोष्ठक के अंदर की स्थिति पूरी कर दी जाती है, तो सभी रिकॉर्ड परिणाम में प्रकट होने में प्रसन्न हैं।

No comments:

Post a Comment