Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

क्वेरी का चयन करें और शर्त के आधार पर गिनती करें

मुझे कोई कारण नहीं दिखता कि आपको सबक्वायरी का उपयोग क्यों करना चाहिए। मेरा मानना ​​है कि आप आसानी से fi_business को जोड़ सकते हैं और fi_business_subcategory एकल कोष्ठक तालिका कारक के लिए।

SELECT
    c.id, 
    c.name,
    c.slug,
    sc.id,
    sc.name,
    sc.slug,
    COUNT(bsc.id) AS business_count
FROM
    fi_category c
LEFT JOIN
    fi_subcategory sc ON c.id = sc.category_id AND (sc.deleted_at IS NULL)
LEFT JOIN (
        fi_business b
    INNER JOIN
        fi_business_subcategory bsc ON b.id = bsc.business_id AND (bsc.deleted_at IS NULL)
    INNER JOIN
        fi_suburb su ON su.id = b.suburb_id AND su.city_id = 1
    ) ON sc.id = bsc.subcategory_id
WHERE 
    (c.deleted_at IS NULL) 
GROUP BY 
    c.id, sc.id

मैंने चेक किया कि यह आपकी तालिका संरचना के लिए मान्य SQL है। मुझे लगता है कि संभावनाएं अच्छी हैं कि यह वांछित परिणाम देगा, भले ही आपकी पहेली में अभी तक कोई डेटा न हो। देखें जॉइन सिंटैक्स पर मैनुअल इस बारे में विवरण के लिए कि आप शामिल होने में कोष्ठक का उपयोग कहां कर सकते हैं।

आप अपने आप से यह भी पूछ सकते हैं कि क्या आपको वाम जॉइन करने के लिए वास्तव में सभी जॉइन की आवश्यकता है। इनर जॉइन का उपयोग करके चीजें लिखना बहुत आसान होगा।

चूंकि जॉइन को बाएं से दाएं निष्पादित किया जाता है, आप पहले इनर जॉइन कर सकते हैं, उसके बाद दाएं का एक क्रम बना सकते हैं जुड़ता है। यह कोष्ठक से बचा जाता है:

SELECT
    c.id cat_id,
    c.name cat_name,
    c.slug cat_slug,
    sc.id sub_id,
    sc.name sub_name,
    sc.slug sub_slug,
    COUNT(bsc.id) AS business_count
FROM
    fi_business b
INNER JOIN
    fi_business_subcategory bsc ON b.id = bsc.business_id
    AND (b.deleted_at IS NULL) AND (bsc.deleted_at IS NULL)
INNER JOIN
    fi_suburb su ON su.id = b.suburb_id AND su.city_id = 1
RIGHT JOIN
    fi_subcategory sc ON sc.id = bsc.subcategory_id
RIGHT JOIN
    fi_category c ON c.id = sc.category_id AND (sc.deleted_at IS NULL)
WHERE
    (c.deleted_at IS NULL)
GROUP BY
    c.id, sc.id


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. दो दिनांक सीमाओं के बीच कितने बराबर दिन होते हैं, SQL

  2. उन चीज़ों का चयन करें जो मौजूद नहीं हैं

  3. mysql से PHP में ऐरे बनाएं

  4. sqlzoo पर स्वयं ट्यूटोरियल #10 में शामिल हों

  5. MySQL - ब्रेक को छोड़कर दो दिनांक-समय के बीच शुद्ध समय अंतर की गणना करें?