उन व्याख्याताओं के नाम खोजें जो स्नातक और स्नातकोत्तर दोनों स्तरों पर पढ़ाते हैं।

SELECT DISTINCT(CONCAT(firstname, ' ', lastname)) as Lecturer_Name  
FROM Lecturer INNER JOIN Subject on Lecturer.id = Subject.lecturer  
WHERE yearlevel IN(1, 2, 3) and WHERE yearlevel = 9  
GROUP BY Lecturer.id

यह 2 टेबल व्याख्याता और विषय से कुछ भी नहीं देता है, जहां अंडरग्रेड में वर्ष स्तर = (1,2,3) और वर्ष स्तर = 9 स्नातकोत्तर है।

किसी भी तरह की सहायता का स्वागत किया जाएगा।

1
pascal ratios 6 अक्टूबर 2017, 04:35
DISTINCT एक फ़ंक्शन नहीं है, यह SELECT DISTINCT का एक भाग है और संपूर्ण चयनित पंक्तियों पर लागू होता है। चीजों को स्पष्ट करने के लिए, उन अनावश्यक कोष्ठकों को हटा दें, अर्थात SELECT DISTINCT CONCAT(firstname, ' ', lastname) ...
 – 
jarlh
6 अक्टूबर 2017, 09:53

3 जवाब

ध्यान देने वाली एक बात यह है कि आपको AND के बाद WHERE की आवश्यकता नहीं है। इसके अलावा, आपकी स्थिति सही नहीं लगती:

yearlevel IN (1, 2, 3) AND yearlevel = 9  

यदि वार्षिक स्तर या तो 1, 2, या 3 (पहली शर्त के अनुसार) होना चाहिए, तो यह 9 नहीं होगा। और यदि वार्षिक स्तर 9 होना चाहिए (दूसरी शर्त के अनुसार), यह 1, 2, या 3 नहीं होगा तो आप कभी भी एक ही समय में दोनों शर्तों को पूरा करने में सक्षम नहीं होंगे, इसलिए कभी नहीं। इसे हल करने का एक तरीका सभी को पहली शर्त में शामिल करना और दूसरी को हटाना है:

yearlevel IN (1, 2, 3, 9)
0
Alex Santos 6 अक्टूबर 2017, 04:41

DISTINCT एक फंक्शन नहीं है। साथ ही, आपको लगभग कभी भी SELECT DISTINCT के साथ GROUP BY की आवश्यकता नहीं होती है।

मैं सुझाव दूंगा:

SELECT DISTINCT CONCAT_WS(' ', l.firstname, l.lastname) as Lecturer_Name  
FROM Lecturer l INNER JOIN
     Subject s
     ON l.id = s.lecturer  
WHERE yearlevel IN (1, 2, 3) AND yearlevel = 9  ;

ध्यान दें कि मैंने टेबल उपनाम भी जोड़े हैं।

संपादित करें:

असल में, जैसा कि मैंने प्रश्न पढ़ा है, मुझे लगता है कि आपका इरादा है:

SELECT DISTINCT CONCAT_WS(' ', l.firstname, l.lastname) as Lecturer_Name  
FROM Lecturer l INNER JOIN
     Subject s
     ON l.id = s.lecturer  
GROUP BY CONCAT_WS(' ', l.firstname, l.lastname)
HAVING SUM(yearlevel IN (1, 2, 3)) > 0 AND
       SUM(yearlevel = 9) > 0  ;
0
Gordon Linoff 6 अक्टूबर 2017, 04:42

SQL क्वेरी में आपके पास एकाधिक WHERE कथन नहीं हो सकते हैं। आपको दूसरे को हटाने की जरूरत है। और DISTINCT एक फलन नहीं है; इसका उपयोग करने के लिए आपको कोष्ठक के बजाय एक स्थान की आवश्यकता होती है।

साथ ही, ध्यान दें कि 9, 1, 2, 3 में नहीं है, इसलिए WHERE yearlevel IN(1, 2, 3) AND yearlevel = 9 होने से कोई परिणाम नहीं मिलेगा। आप इसके बजाय OR कथन का भी उपयोग करना चाहते हैं। या बेहतर अभी तक, बस इसे अपने IN में शामिल करें:

SELECT DISTINCT CONCAT(firstname, ' ', lastname) as Lecturer_Name  
FROM Lecturer INNER JOIN Subject on Lecturer.id = Subject.lecturer  
WHERE yearlevel IN(1, 2, 3, 9)  
GROUP BY Lecturer.id

उम्मीद है ये मदद करेगा! :)

0
Obsidian Age 6 अक्टूबर 2017, 04:43