मैं कंपनियों निम्न क्वेरीMySQL का चयन गिनती
SELECT count(*)
FROM company c
JOIN product p on c.id = product.company_id
WHERE p.is_deleted = 0
AND c.is_customer = 1
AND c.company_type_id = 5
GROUP by c.id
तो कम से कम एक उत्पाद है की संख्या की गणना करने के लिए कोशिश कर रहा हूँ, यह मेरे सभी कंपनियों की एक सूची से पता चलता है, और प्रत्येक के लिए उत्पादों की गिनती कंपनी।
जो मैं प्राप्त करने की कोशिश कर रहा हूं वह उपरोक्त परिणाम से कंपनियों की गिनती है।
यह इस प्रकार प्राप्त किया जा सकता:
SELECT count(*)
FROM (
SELECT count(*)
FROM company c
JOIN product p on c.id = product.company_id
WHERE p.is_deleted = 0
AND c.is_customer = 1
and c.company_type_id = 5
GROUP by c.id) AS t1
तो, यह मुझे सही परिणाम देता है, लेकिन मैं सिर्फ अगर वहाँ काम करने के लिए एक अधिक कुशल तरीका है सोच रहा हूँ।
ऐसा लगता है कि आप एक बहुत अच्छा काम यहाँ किया है। मुझे सुधार के लिए कोई जगह नहीं दिखती है जब तक कि आप वास्तव में प्रदर्शन समस्याओं का सामना नहीं करते हैं – BigFatBaby
निश्चित रूप से उपर्युक्त क्वेरी हमेशा 1 लौट जाएगी ?! आपके पास एक COUNT (*) 'है जो एक फ़ील्ड देता है, फिर आप एक फ़ील्ड के लिए फिर से COUNT (*)' चुनें ... क्या मुझे कुछ याद आ रहा है? – anothershrubery
@ अन्य: आंतरिक गिनती (*) में 'समूह' है - यह प्रति कंपनी एक गिनती देता है – Blorgbeard