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