मैं इस कोड को ओरेकल 11 जी के साथ चलाने की कोशिश कर रहा हूं और हर समय एक त्रुटि होती है जो 'ओआरए -00936: लापता अभिव्यक्ति' है, मुझे लगता है कि समस्या अद्वितीय खंड के साथ है लेकिन मुझे नहीं पता कि क्यों। कृपया कोई विचार?

select id , name , dept_name , salary
from instructor 
where unique (select teaches.id
              from teaches 
              where instructor.id = teaches.id and year = 2009 );
-1
programmer 11 मार्च 2020, 12:32
2
आप किस ट्यूटोरियल/डॉक्टर का अनुसरण कर रहे हैं जो बताता है कि UNIQUE EXISTS या Oracle में कोई भी ऑपरेटर है? जिज्ञासु क्योंकि मैंने इसे केवल एक खोजशब्द के रूप में जाना है जो कि विरोधाभास/अनुक्रमणिका आदि बनाने में है
 – 
Caius Jard
11 मार्च 2020, 12:35
1
तुम क्या करना चाहते हो?
 – 
GMB
11 मार्च 2020, 12:35
मैं इसे कोलाज में सीख रहा हूं, मैं ऐसे प्रशिक्षकों को ढूंढना चाहता हूं जिन्होंने 2009 में केवल एक कोर्स के बारे में सोचा हो
 – 
programmer
11 मार्च 2020, 12:54
कृपया जहां खंड where unique (select distinct teaches.id from teaches where instructor.id = teaches.id and year = 2009 ); में पास करें
 – 
jishan siddique
11 मार्च 2020, 13:03
@APC, where unique विशिष्ट क्वेरी स्थिति मुझे नहीं लगता कि unique() क्वेरी में काम कर रहा है।
 – 
jishan siddique
11 मार्च 2020, 13:18

4 जवाब

संभवतः, आप ऐसे प्रशिक्षक चाहते हैं जो 2009 में केवल एक बार पढ़ाया।

यदि ऐसा है, तो आप कर सकते हैं:

select id, name, dept_name, salary
from instructor i
where (select count(*) from teaches t where i.id = t.instructor_id and t.year = 2009) = 1;

मुझे उम्मीद है कि teaches तालिका में id के बजाय instructor(id) से संबंधित instructor_id कॉलम होगा।

एक अन्य विकल्प एकत्रीकरण का उपयोग करता है:

select i.id, i.name, i.dept_name, i.salary
from instructor i
inner join teaches t on t.instructor_id = i.id and t.year = 2009
group by i.id, i.name, i.dept_name, i.salary
having count(*) = 1
0
GMB 11 मार्च 2020, 12:37
आप सही हैं लेकिन मुझे इसे अद्वितीय खंड के साथ आज़माने की ज़रूरत है
 – 
programmer
11 मार्च 2020, 12:56
@programmer: Oracle में कोई unique खंड नहीं है; unique का उपयोग इंडेक्स की परिभाषा में किया जा सकता है, बस इसके बारे में। आप अन्य उत्तरों और टिप्पणियों का उल्लेख भी देख सकते हैं।
 – 
GMB
11 मार्च 2020, 13:25

मुझे लगता है कि आप चाहते हैं

        select distinct id , name , dept_name , salary

और आप कहाँ एक "इन" स्टेटमेंट होना चाहिए कि

0
Ashley Kilgour 11 मार्च 2020, 12:39

आप जो करना चाहते हैं उसका स्पष्टीकरण, साथ ही नमूना डेटा निश्चित रूप से मदद करेगा; हम केवल इतना जानते हैं कि आपने एक प्रश्न लिखा है जो अमान्य है।

इस बीच, एक और भाग्यशाली अनुमान:

select i.id, i.name, i.dept_name, i.salary
from instructor i join teaches t on t.id = i.id
where t.year = 2009
0
Littlefoot 11 मार्च 2020, 12:42

"मुझे इसे अद्वितीय खंड के साथ आज़माने की ज़रूरत है"

UNIQUE एक ऑपरेटर नहीं है। आप यह क्या कर सकते हैं:

select id , name , dept_name , salary
from instructor 
where instructor.id in  (select unique teaches.id
                         from teaches 
                         where   year = 2009 
                         group by teaches.id having count(*) = 1);

हालाँकि, UNIQUE बेमानी है क्योंकि इसका एक ही प्रभाव है:

select id , name , dept_name , salary
from instructor 
where instructor.id in  (select teaches.id
                         from teaches 
                         where   year = 2009 
                         group by teaches.id having count(*) = 1 );

यदि आप हमारे द्वारा दिए गए उत्तरों से खुश नहीं हैं, तो आपको ट्यूटोरियल से एक लिंक या उद्धरण पोस्ट करने की आवश्यकता है। क्योंकि ऐसा लगता है कि आप कुछ ऐसा करने की कोशिश कर रहे हैं जो Oracle SQL सिंटैक्स का समर्थन नहीं करता है।

0
APC 11 मार्च 2020, 13:08