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

पोस्टग्रेएसक्यूएल:तारीख के आधार पर छांटे गए 3 टेबलों को कैसे मिलाएं

सबसे अच्छा तरीका है कि तीन अन्य तालिकाओं से सामान्य फ़ील्ड वाली एक नई तालिका बनाएं और सामान्य दिनांक फ़ील्ड पर एक अनुक्रमणिका जोड़ें। मूल तीन तालिकाओं में सामान्य तालिका से जुड़ी एक विदेशी कुंजी होनी चाहिए। इस डिज़ाइन के साथ क्वेरी सरल हो जाती है:

SELECT *
FROM common_table
ORDER BY "date" DESC
LIMIT 100

यदि आपको अधिक विशिष्ट तालिकाओं के डेटा की भी आवश्यकता है, तो आप उसी क्वेरी में उस डेटा का चयन करने के लिए LEFT JOINs का उपयोग कर सकते हैं।

यदि आप अपना डिज़ाइन नहीं बदल सकते हैं और प्रदर्शन कोई समस्या नहीं है, तो आप सॉर्ट करने से पहले तीनों तालिकाओं के परिणामों को संयोजित करने के लिए UNION ALL का उपयोग कर सकते हैं:

SELECT * FROM table1
UNION ALL
SELECT * FROM table2
UNION ALL
SELECT * FROM table3
ORDER BY "date" DESC
LIMIT 100

ध्यान दें कि उपरोक्त केवल तभी काम करेगा जब सभी तालिकाओं की संरचना समान हो। यदि आपके पास फ़ील्ड हैं जो एक तालिका में होती हैं लेकिन दूसरों में नहीं होती हैं तो आपको उन्हें चयन से छोड़ देना चाहिए या फिर अन्य तालिकाओं में उस कॉलम के लिए न्यूल वापस कर देना चाहिए। उदाहरण के लिए यदि:

  • table1 कॉलम हैं a , b , c और date
  • table2 कॉलम हैं b , c और date
  • table3 कॉलम हैं a , c और date

फिर इसका इस्तेमाल करें:

SELECT a, b, c, "date"
FROM table1
UNION ALL
SELECT NULL AS a, b, c, "date"
FROM table2
UNION ALL
SELECT a, NULL as b, c, "date"
FROM table3
ORDER BY "date" DESC
LIMIT 100


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django - संबंध संबंध मौजूद नहीं है। python manage.py माइग्रेट नहीं चला सकता?

  2. मैं मूल क्वेरी में स्ट्रिंग [] पैरामीटर कैसे सेट कर सकता हूं?

  3. एक स्तर से अननेस्ट सरणी

  4. Django डेटटाइम फ़ील्ड टाइमज़ोन के बिना टाइमस्टैम्प फ़ील्ड उत्पन्न करने के लिए

  5. रिकर्सिव क्लॉज के साथ प्रयोग का चयन कैसे करें