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

दो टेबल mysql में शामिल हों, एक से कई संबंध

आपको GROUP BY . का उपयोग करना होगा यह समझाने के लिए कि किस समूह के आधार पर गणना की जाए। बिना GROUP BY . के जैसा कि आपने देखा, आपको पूरे परिणाम सेट का केवल एक समूह मिलता है।

मानक SQL में GROUP BY . में शामिल करना आवश्यक है SELECT . में शामिल प्रत्येक गैर-समग्र व्यंजक को क्लॉज करें खंड, लेकिन MySQL आपको ऐसा न करने से दूर होने देता है, जिससे निम्न की तरह एक अभिव्यक्ति की अनुमति मिलती है। (कम से कम, जब सख्त मोड में नहीं है; मुझे यकीन नहीं है कि सख्त मोड मानक एसक्यूएल से मेल खाने के लिए इस आवश्यकता को मजबूत करता है)

SELECT `items`.*, COUNT(1) AS points
FROM `items` INNER JOIN `points` ON `items`.`id` = `points`.`item_id`
WHERE ...
GROUP BY `items`.`id`

मान लें कि items.id इस तालिका की प्राथमिक कुंजी है, और इसलिए यह items की एक से अधिक पंक्तियों में दिखाई नहीं देगी , इसका वांछित प्रभाव होना चाहिए।

एक बार जब आप GROUP BY introduce का परिचय दे देते हैं WHERE . के बीच के अंतर को समझना महत्वपूर्ण है और HAVING खंड। पूर्व शर्त पहले . पर लागू होती है समूह और समुच्चय लागू होते हैं, जबकि बाद वाले बाद में applies लागू होते हैं . इसका मतलब है कि आपको HAVING . का उपयोग करना चाहिए यदि आप उस गिनती के आधार पर एक सशर्त करना चाहते हैं; WHERE आपके प्रारंभिक उदाहरण में क्लॉज एग्रीगेट से पहले लागू होगा, इसलिए परिणाम दी गई तारीख के बाद बनाए गए अंकों की गिनती होगी।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं कैसे सुनिश्चित कर सकता हूं कि यादृच्छिक रूप से चुनी गई दो पंक्तियाँ एक दूसरे से भिन्न हैं?

  2. सत्र की स्थिति के आधार पर चर सामग्री बदलने में त्रुटियाँ

  3. java.sql.SQLException:jdbc के लिए कोई उपयुक्त ड्राइवर नहीं मिला:mysql:// localhost:3306/dbname

  4. MySQL टाइमस्टैम्प में मानों को डेटाटाइम मान में अपडेट करें।

  5. मैक पर MySQL स्थापित करें