sql - "कहाँ" खंड में "और" और "या" का उपयोग कैसे करें

Translate

मेरे पास एक क्वेरी है जो शर्तों के एक सेट के आधार पर जानकारी एकत्र कर रही है। मूल रूप से मैं जानना चाहता हूं कि क्या किसी स्थान ने दिन के लिए $ 50 से अधिक का भुगतान किया है या टिप्पणी अनुभाग में "फ़िल्टर" शब्द है ...

मेरी क्वेरी है:

SELECT        Store_Id, Paid_Out_Amount, Paid_Out_Comment, Paid_Out_Datetime, Update_UserName, Till_Number
FROM            Paid_Out_Tb
WHERE        (Store_Id = 1929) AND (Paid_Out_Datetime >= DATEADD(day, DATEDIFF(day, 0, GETDATE()) - 1, 0)) AND (Paid_Out_Datetime < DATEADD(day, DATEDIFF(day, 0, 
                         GETDATE()), 0)) AND (Paid_Out_Amount > 50) OR
                         (Paid_Out_Comment LIKE N'%' + 'Filter' + '%')

समस्या यह है कि यह 460 परिणाम देता है और केवल 2 वापस करना चाहिए।

This question and all comments follow the "Attribution Required."

सभी उत्तर

Translate

आपको माता-पिता के दूसरे सेट में अपने Paid_Out_Amoutn और Paid_Out_Comment मानदंड को लपेटने की आवश्यकता है:

SELECT Store_Id, Paid_Out_Amount, Paid_Out_Comment, Paid_Out_Datetime, 
    Update_UserName, Till_Number 
FROM Paid_Out_Tb 
WHERE (Store_Id = 1929) AND (Paid_Out_Datetime >= 
    DATEADD(day, DATEDIFF(day, 0, GETDATE()) - 1, 0)) AND 
    (Paid_Out_Datetime < DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)) AND 
    (
        (Paid_Out_Amount > 50) OR (Paid_Out_Comment LIKE N'%' + 'Filter' + '%')
    )
स्रोत
Translate

यह वास्तव में इस बात पर निर्भर करता है कि आप OR के लिए क्या उपयोग कर रहे हैं। आपके पास Paid_Out_Amount 50 से अधिक है या Paid_Out_Amount N% फ़िल्टर% की तरह है। आप कोष्ठक में कुछ कोष्ठक जोड़ें

WHERE 
(
    (1 = 1)
    AND
    (2 = 2)
)
OR
( 3 = 3 )
स्रोत
Translate

ऐसा लगता है कि आप कोष्ठक का एक सेट याद कर रहे हैं:

SELECT        
    Store_Id
    , Paid_Out_Amount
    , Paid_Out_Comment
    , Paid_Out_Datetime
    , Update_UserName
    , Till_Number
FROM            
    Paid_Out_Tb
WHERE        
    Store_Id = 1929
    AND Paid_Out_Datetime >= DATEADD(day, DATEDIFF(day, 0, GETDATE()) - 1, 0)
    AND Paid_Out_Datetime < DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
    AND
    (
        Paid_Out_Amount > 50
        OR
        LOWER(Paid_Out_Comment) LIKE '%filter%'
    )

आपको उस LIKE कमांड को भी देखना होगा - कमेंट को अपडेट करने के लिए कोड को अपडेट करना होगा और वर्ड फिल्टर को सर्च करना होगा।

अपने Paid_Out_Datetime चेक के लिए कमांड BETWEEN भी देखें

स्रोत
Translate

ANDपूर्वता लेता हैOR। यदि आप पूर्वता को नियंत्रित करना चाहते हैं तो आपको अपनी शर्तों को समूहित करना होगा। इसे इस्तेमाल करे:

SELECT        Store_Id, Paid_Out_Amount, Paid_Out_Comment, Paid_Out_Datetime, Update_UserName, Till_Number
FROM            Paid_Out_Tb
WHERE        (Store_Id = 1929) AND (Paid_Out_Datetime >= DATEADD(day, DATEDIFF(day, 0, GETDATE()) - 1, 0)) AND (Paid_Out_Datetime < DATEADD(day, DATEDIFF(day, 0, 
                     GETDATE()), 0)) AND ( (Paid_Out_Amount > 50) OR
                     (Paid_Out_Comment LIKE N'%' + 'Filter' + '%') )
स्रोत
Translate
SELECT        Store_Id, Paid_Out_Amount, Paid_Out_Comment, Paid_Out_Datetime, Update_UserName, Till_Number
FROM            Paid_Out_Tb
WHERE        (Store_Id = 1929) AND (Paid_Out_Datetime >= DATEADD(day, DATEDIFF(day, 0, GETDATE()) - 1, 0)) AND (Paid_Out_Datetime < DATEADD(day, DATEDIFF(day, 0, 
                         GETDATE()), 0)) AND (Paid_Out_Amount > 20) OR
                         (Store_Id = 1929) AND (Paid_Out_Datetime >= DATEADD(day, DATEDIFF(day, 0, GETDATE()) - 1, 0)) AND (Paid_Out_Datetime < DATEADD(day, DATEDIFF(day, 0, 
                         GETDATE()), 0)) AND (Paid_Out_Comment LIKE N'%' + 'Filter' + '%')

मैंने आपके सुझावों का एक समूह युग्मित किया, और ऊपर के साथ बाहर आया। यह काम। धन्यवाद!

स्रोत
Translate

निम्नलिखित प्रश्न के साथ प्रयास करें:

SELECT        Store_Id, Paid_Out_Amount, Paid_Out_Comment, Paid_Out_Datetime, Update_UserName, Till_Number
FROM            Paid_Out_Tb
WHERE       ((Store_Id = 1929) AND (Paid_Out_Datetime >= DATEADD(day, DATEDIFF(day, 0, GETDATE()) - 1, 0)) AND (Paid_Out_Datetime < DATEADD(day, DATEDIFF(day, 0, 
                         GETDATE()), 0)) AND (Paid_Out_Amount > 50)) OR
                         (Paid_Out_Comment LIKE N'%' + 'Filter' + '%')
स्रोत
Translate

आपको पैरेन्थेसिस में जहां क्लॉज ('या' तक) के पहले भाग को घेरना है।

(
 (Store_Id = 1929) AND (Paid_Out_Datetime >= DATEADD(day, DATEDIFF(day, 0, GETDATE()) - 1, 0)) AND (Paid_Out_Datetime < DATEADD(day, DATEDIFF(day, 0, 
                         GETDATE()), 0)) AND (Paid_Out_Amount > 50)

) OR (Paid_Out_Comment LIKE N'%' + 'Filter' + '%')
स्रोत
Leave a Reply
You must be logged in to post a answer.
लेखक के बारे में