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

संबंध के आधार पर एक रिकॉर्ड के विरुद्ध एकाधिक रिकॉर्ड कैसे प्राप्त करें?

मूल प्रश्न डेटाबेस विशिष्ट था, लेकिन शायद अधिक सामान्य उत्तर शामिल करने के लिए यह एक अच्छी जगह है। यह एक सामान्य प्रश्न है। आप जिस अवधारणा का वर्णन कर रहे हैं उसे अक्सर 'समूह संयोजन' के रूप में जाना जाता है। SQL-92 या SQL-99 में कोई मानक समाधान नहीं है। तो आपको एक विक्रेता-विशिष्ट समाधान की आवश्यकता होगी।

  • MySQL - अंतर्निहित GROUP_CONCAT फ़ंक्शन का उपयोग करें। आपके उदाहरण में आप कुछ इस तरह चाहेंगे:
select 
  o.ID, o.Address, o.OtherDetails,
  GROUP_CONCAT( concat(e.firstname, ' ', e.lastname) ) as Employees
from 
  employees e 
  inner join organization o on o.org_id=e.org_id
group by o.org_id
  • PostgreSQL - PostgreSQL 9.0 अब उतना ही सरल है जितना कि string_agg(expression, delimiter) बिल्ट-इन है। यहाँ यह तत्वों के बीच 'अल्पविराम-स्थान' के साथ है:
select 
  o.ID, o.Address, o.OtherDetails,
  STRING_AGG( (e.firstname || ' ' || e.lastname), ', ' ) as Employees
from 
  employees e 
  inner join organization o on o.org_id=e.org_id
group by o.org_id

9.0 से पहले PostgreSQL आपको CREATE AGGREGATE के साथ अपने स्वयं के समग्र कार्यों को परिभाषित करने की अनुमति देता है। MySQL की तुलना में थोड़ा अधिक काम, लेकिन बहुत अधिक लचीला। इसे देखें अन्य पोस्ट अधिक जानकारी के लिए। (बेशक PostgreSQL 9.0 और बाद में यह विकल्प भी है।)

  • ओरेकल - LISTAGG . का उपयोग करके एक ही विचार ।

  • एमएस एसक्यूएल सर्वर - STRING_AGG . का उपयोग करके एक ही विचार

  • फ़ॉलबैक समाधान - अन्य डेटाबेस तकनीकों में या ऊपर सूचीबद्ध तकनीकों के बहुत पुराने संस्करणों में आपके पास ये समूह संयोजन कार्य नहीं हैं। उस स्थिति में एक संग्रहित प्रक्रिया बनाएं जो org_id को अपने इनपुट के रूप में लेती है और समेकित कर्मचारी नामों को आउटपुट करती है। फिर अपनी क्वेरी में इस संग्रहीत कार्यविधि का उपयोग करें। यहां कुछ अन्य प्रतिक्रियाओं में इस तरह की संग्रहीत प्रक्रियाओं को लिखने के तरीके के बारे में कुछ विवरण शामिल हैं।

select 
  o.ID, o.Address, o.OtherDetails,
  MY_CUSTOM_GROUP_CONCAT_PROCEDURE( o.ID ) as Employees
from 
  organization o


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP और MYSQL का उपयोग करके फ़ील्ड खोज का संयोजन

  2. PHP/MySQL - पहले से ऑटो जेनरेट की गई तालिका में एक पंक्ति के लिए स्वत:उत्पन्न लिंक कैसे हटाएं?

  3. MySQL:प्रतिदिन अलग-अलग पंक्तियों की गणना करें

  4. ज़िप/डाक कोड द्वारा निकटतम स्थान का पता लगाएं?

  5. माई एसक्यूएल। सेल्फ जॉइन का उपयोग कैसे करें