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

MySQL में किसी श्रेणी से संबंधित रिकॉर्ड्स की गणना करना

श्रेणियाँ में एक कॉलम जोड़ें जो मुख्य श्रेणी देता है जिसमें प्रत्येक श्रेणी है (मुख्य श्रेणियों के साथ खुद को देते हुए)। तो:

cat_id | main_cat_id | title
-------+-------------+---------
01     | 01          | Science
0101   | 01          | Medicine
02     | 02          | Sport

मुख्य श्रेणियों को खोजने के लिए cat_id =main_cat_id पर इसमें से चुनें; चाइल्ड कैटेगरी खोजने के लिए लेफ्ट.कैट_आईडी =राइट.मेन_कैट_आईडी पर खुद से जुड़ें, फिर कैट_आईडी =कैट_आईडी पर पोस्ट पर। बाएँ.cat_id द्वारा समूहित करें और cat_id पर प्रोजेक्ट करें और गिनती करें(*)।

मैंने इसे PostgreSQL 8.4 में करने की कोशिश की, और मुझे नहीं लगता कि यह MySQL में क्यों काम नहीं करेगा, क्योंकि क्वेरी बहुत बुनियादी है। मेरी टेबल:

create table categories(
  cat_id varchar(40) primary key,
  main_cat_id varchar(40) not null references categories,
  title varchar(40) not null
)

create table posts (
  post_id integer primary key,
  cat_id varchar(40) not null references categories,
  title varchar(40) not null
)

मेरी क्वेरी (आईडी के बजाय शीर्षक के आधार पर समूहीकृत करना):

select m.title, count(*)
from categories m, categories c, posts p
where m.cat_id = c.main_cat_id
  and c.cat_id = p.cat_id
group by m.title

अद्यतन:ओपी ने कोशिश की, जैसा कि मैंने स्ट्रिंग ऑपरेशन के साथ यह काम करने का एक शॉट भी लिया था। क्वेरी (मानक-अनुपालन SQL में, MySQL की बोली के बजाय PostgreSQL द्वारा स्वीकृत) है:

select m.title, count(*)
from categories m, posts p
where m.cat_id = substring(p.cat_id from 1 for 2)
group by m.title;

जो ठीक काम करता है। मैं गति के रूप में एक सार्थक तुलना की पेशकश नहीं कर सकता, लेकिन इसके लिए क्वेरी प्लान टू-वे जॉइन की तुलना में थोड़ा आसान लग रहा था।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या एक 'अद्वितीय' कॉलम फ़ील्ड MySQL के साथ एक इंडेक्स दर्शाता है, और यदि हां, तो क्यों?

  2. सी # MySQL SSL कनेक्शन त्रुटि conn.Open () का उपयोग करने का प्रयास करते समय

  3. MySQL स्क्रिप्ट कमांड लाइन के लिए पैरामीटर पास करें

  4. एसक्यूएल में मैं एक पूर्णांक के लिए अधिकतम मूल्य कैसे प्राप्त करूं?

  5. कैसे शुरू से अंत तिथि तक mysql में सप्ताहवार रिकॉर्ड प्राप्त करने के लिए?