2013-03-07 4 views
5

यह शायद अपने सीमित एसक्यूएल ज्ञान की वजह से है पर होगा, लेकिन मैं इस तरह के एक बयान का उपयोग कर डेटा प्राप्त करने का प्रयास कर रहा हूँ:क्या एक क्वेरी के भीतर कई एसक्यूएल चयन कथन करना संभव है? दोनों का चयन करें बयान एक ही मेज

SELECT hostname 
FROM mytable 
WHERE hostname NOT LIKE '%obl%' 
    AND group NOT IN ('group1','group2','group3','group4','group5','group6','group7') 
    AND osname LIKE '%Windows%' 
    AND hostname NOT LIKE 'nic%' 

मुझे लगता है कि शायद एक बहुत खराब है बयान, लेकिन यह अब तक काम किया है। शुरुआत में मैं उन प्रविष्टियों को बहिष्कृत करता हूं जहां होस्टनाम "obl" जैसा नहीं है। मैं इस तरह एक और प्रश्न हैं:

SELECT hostname 
FROM mytable 
WHERE hostname LIKE '%obl%' 
    AND group IN ('group9','group0') 

से मैं क्या समझ, मिलती, इस मामले में इस्तेमाल नहीं किया जा के बाद से दोनों प्रश्नों ही मेज पर हैं (हालांकि मिलती है की मेरी जानकारी बहुत सीमित है)। मैं एक webservice के माध्यम से इस डेटाबेस का उपयोग कर रहा हूँ, और मुझे यकीन नहीं है कि यह किस प्रकार का डेटाबेस है।

क्या किसी के पास कोई प्रश्न है कि मैं एक प्रश्न में दोनों प्रश्नों से मूल्य कैसे प्राप्त कर सकता हूं?

+0

आप किस प्रकार के आउटपुट की अपेक्षा करते हैं? –

उत्तर

8

आपको यूनियन स्टेटमेंट का उपयोग करना चाहिए।

SELECT hostname FROM mytable 
WHERE hostname 
    NOT LIKE '%obl%' AND 
    group NOT IN ('group1','group2','group3','group4','group5','group6','group7') 
    AND osname LIKE '%Windows%' 
    AND hostname not LIKE 'nic%' 

UNION 

SELECT hostname FROM mytable 
WHERE hostname 
    LIKE '%obl%' 
    AND group in ('group9','group0') 

कि यह करना होगा, लेकिन मुझे लगता है कि तुम कहाँ की स्थिति उन पर पुनर्विचार कर सकते हैं। यदि आवश्यक हो तो मैं इसे एक विचार दूंगा और संपादित करूंगा।

संपादित करें: आप जो भी कर रहे हैं उसे प्राप्त कर सकते हैं, संघ के लिए कोई आवश्यकता नहीं है।

SELECT hostname FROM mytable 
WHERE (
    hostname NOT LIKE '%obl%' 
    AND group NOT IN ('group1','group2','group3','group4','group5','group6','group7') 
    AND osname LIKE '%Windows%' 
    AND hostname NOT LIKE 'nic%' 
) 
OR (
    hostname LIKE '%obl%' 
    AND group IN ('group9','group0') 
) 
0

आप इन दो कथनों को संयोजित करने के लिए union बयान या OR हालत उपयोग कर सकते हैं।

select hostname from mytable where (hostname not like '%obl%' and group not in ('group1','group2','group3','group4','group5','group6','group7') and osname like '%Windows%' and hostname not like 'nic%') 
OR 
(hostname like '%obl%' and group in ('group9','group0')) 
0

तुम कहाँ सिर्फ एक में स्थिति, का उपयोग करते हुए दो गठजोड़ कर सकते हैं या उन दोनों को लागू करने के लिए। कुछ इस तरह:

SELECT hostname FROM mytable WHERE 
(hostname NOT LIKE '%obl%' AND group NOT IN ('group1','group2','group3','group4','group5','group6','group7') AND osname LIKE '%Windows%' AND hostname NOT LIKE 'nic%') 
OR 
(hostname LIKE '%obl%' AND group IN ('group9','group0') 

दो अंक: एसक्यूएल शब्द के लिए

  • का उपयोग अपरकेस प्रश्नों को पढ़ने के लिए आसान बनाता है।
  • शायद आपको SELECT DISTINCT होस्टनाम का उपयोग करना होगा यदि आप यह सुनिश्चित करना चाहते हैं कि वही दोहराया न जाए।
संबंधित मुद्दे