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
en az bir ürün var şirketlerinin sayısını saymak için çalışıyorum
, bu bana tüm şirketlerin bir listesini gösterir MySQL, ve her biri için ürünlerin sayımı şirket.
Neyi başarmaya çalıştığım, yukarıdaki sonuçlardan şirketlerin sayısıdır. aşağıdaki gibi
Bu
elde edilebilir: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
Yani, bu bana doğru sonucu verir, ama şeyler yapmanın daha verimli bir yolu yoktur diye merak ediyorum.
burada bulman oldukça iyi bir iş yapmış gibi görünüyor. Gerçekten performans sorunları yaşadıkça iyileşme için yer göremiyorum – BigFatBaby
Şüphesiz yukarıdaki sorgu her zaman 1'e dönecek ?! Tek bir alan döndüren bir COUNT (*) 'a sahip olursunuz, daha sonra tek bir alan için tekrar COUNT (*)' dediğinizde ... Bir şeyi özlüyor muyum? – anothershrubery
@another: iç sayı (*) bir 'grup by' - her şirket başına bir sayı döndürür – Blorgbeard