मेरे पास दो इतिहास तालिकाएं हैं जो व्यक्तिगत मानों को ट्रैक करने के लिए एक संशोधन आईडी का उपयोग करके डेटाबेस मानों में परिवर्तन ट्रैक करती हैं। जैसेमूल्यों को भरते समय दो संस्करण-ट्रैकिंग तालिकाओं को विलय करना
तालिका 1:
rev | A | B
=================
1 | 100 | 'A'
4 | 150 | 'A'
7 | 100 | 'Z'
तालिका 2:
rev | C | D
==================
1 | 200 | True
5 | 0 | True
8 | 0 | False
लक्ष्य में दो तालिकाओं विलय करने के लिए होगा:
rev | A | B | C | D
===============================
1 | 100 | 'A' | 200 | True
4 | 150 | 'A' | 200 | True
5 | 150 | 'A' | 0 | True
7 | 100 | 'Z' | 0 | True
8 | 100 | 'Z' | 0 | False
विचार किया जा रहा है कि के लिए एक दिया के लिए संशोधन, मैं उस संशोधन से संबंधित मूल्यों को लेता हूं या उससे उच्चतम संशोधन कम करता हूं।
SQL क्वेरी जो मन में आता कुछ बाधा rev1 साथ दो तालिकाओं में शामिल होने < rev2 पार करने के लिए है, तो एक सबक्वेरी जहां rev1 = अधिकतम (rev1) प्रत्येक के लिए दिया rev2 का उपयोग कर पंक्तियों का चयन सदृश होगा ; इस क्वेरी को अपने समकक्ष के साथ rev2 और rev1 का आदान-प्रदान करने के साथ मिलकर; और आखिरकार rev1 = rev2 से डुप्लीकेट को फ़िल्टर करना।
प्रश्न हैं:
- वहाँ में शामिल होने के इस प्रकार के लिए एक नाम है?
- क्या SQL में इस प्रकार के शामिल होने के लिए कोई मुहावरे है, या प्रोग्रामेटिक रूप से ऐसा करना बेहतर होगा (जो निश्चित रूप से अधिक सरल और संभवतः अधिक कुशल होगा)?
क्या RDBMS? कुछ को इस प्रकार के संचालन के लिए समर्थन है, इसलिए (विशेष रूप से यदि डेटा स्थान बड़ा है) यह वास्तव में डेटाबेस में अधिक कुशल हो सकता है। –
तो आप क्वेरी नहीं चाहते हैं, लेकिन सिर्फ उन दो सवालों के जवाब? –
डेटाबेस PostgreSQL है, हालांकि तकनीकी रूप से काम डीबी से स्वतंत्र होना चाहिए (वास्तव में यह होने वाला नहीं है)। और हाँ, केवल सवालों के जवाब में दिलचस्पी है, जब तक कि एक बहुत ही सरल क्वेरी नहीं है जिसे मैं देख रहा हूं। –