में देखते हुए शामिल करेंकुशलतापूर्वक कॉलम नहीं एसक्यूएल के समूह के आधार पर क्वेरी
तालिका A
Id INTEGER
Name VARCHAR(50)
टेबल बी
Id INTEGER
FkId INTEGER ; Foreign key to Table A
मैं हर FkId
मूल्य की occurrances गिनती करना चाहते हैं :
SELECT FkId, COUNT(FkId)
FROM B
GROUP BY FkId
अब मैं बस Table A
से नाम आउटपुट करना चाहता हूं।
यह काम नहीं करेगा:
SELECT FkId, COUNT(FkId), a.Name
FROM B b
INNER JOIN A a ON a.Id=b.FkId
GROUP BY FkId
क्योंकि a.Name
GROUP BY
खंड में निहित नहीं है (is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause
त्रुटि पैदा करता है)।
बिंदु इस
FkId Count Name
1 42 Ronald
2 22 John
कि त्रुटि संदेश के लिए इतने पर काफी कुछ भी मैच नहीं है, लेकिन कुछ जैसे की तरह उत्पादन को यह
FkId Count
1 42
2 25
तरह उत्पादन से स्थानांतरित करने के लिए है https://stackoverflow.com/a/6456944/141172 की टिप्पणियां हैं जैसे "तालिका के बजाय 3 स्कैन जेनरेट करेंगी, इसलिए स्केल नहीं होगी"। क्वेरी उत्पादन में:
मैं कैसे कुशलतापूर्वक में शामिल हो गए Table B
(FkId
करने के लिए 1 संबंध है जो एक 1 है) से एक क्षेत्र शामिल हैं कर सकते हैं?
क्या आप कुछ नमूना डेटा और वांछित परिणाम दिखा सकते हैं? मुझे FKId प्रति एक से अधिक अद्वितीय नाम होने पर कठिनाई हो रही है। –
FkId प्रति केवल एक अद्वितीय नाम होगा। बिंदु सिर्फ एफकेआईडी के साथ नाम दिखाने के लिए है, इसलिए परिणाम देखने वाले उपयोगकर्ता को "व्यक्ति 1 42 बार दिखाया गया" नहीं दिखता है बल्कि यह "व्यक्ति 1, जिसका नाम रोनाल्ड है, 42 बार दिखाया गया है" देखता है। –
तो समूह में नाम क्यों न जोड़ें? –