यहां एक प्रश्न है कि मैं अपने दिमाग को खत्म कर रहा हूं। मान लें कि मेरे पास एक सारणी है जिसमें टाइमस्टैम्प की एक श्रृंखला है और प्राथमिक कुंजी के रूप में एक भाग संख्या है। तालिका में वृद्धिशील परिवर्तन होते हैं, जिसका अर्थ है कि प्रत्येक टाइमस्टैम्प के लिए, यदि कोई फ़ील्ड बदलता है, तो वह परिवर्तन दर्ज किया जाता है। यदि फ़ील्ड नहीं बदलता है, तो नए टाइमस्टैम्प के लिए यह पूर्ण है। यहां बुनियादी विचार है।डेटाबेस: अंतिम गैर-शून्य प्रविष्टियों का चयन करें
part | timestamp | x-pos | y-pos | status
------+-----------+-------+-------+--------
a5 | 151 | 5 | 15 | g
a5 | 153 | NULL | 17 | NULL
(part, timestamp)
प्राथमिक कुंजी है। दूसरे रिकॉर्ड में NULL
एस उन मानों को इंगित करता है जो पहले रिकॉर्ड के बाद अपरिवर्तित हैं।
मैं जो करने में सक्षम होना चाहता हूं वह हिस्सा द्वारा समूहित प्रत्येक फ़ील्ड के लिए सबसे हाल के मानों का चयन करना है। उदाहरण के लिए, उपर्युक्त प्रविष्टियों को देखते हुए, परिणाम भाग 5 के लिए 153,5,17, जी होंगे।
अभी तक, मैंने यह एक साथ क्वेरी हैक की है।
((SELECT x-pos FROM part_changes WHERE x-pos IS NOT NULL
ORDER BY timestamp DESC
LIMIT 1)
UNION
(SELECT y-pos FROM part_changesWHERE y-pos IS NOT NULL
ORDER BY timestamp DESC
LIMIT 1)
UNION
(SELECT status FROM part_changes WHERE status IS NOT NULL
ORDER BY timestamp DESC
LIMIT 1))
लेकिन यह एक एकल कॉलम देता है, जिसका अर्थ है कि मैं आयोजन के लिए समूह का उपयोग कर सकता हूं।
चीज करने का एक और अधिक शानदार तरीका होना चाहिए, जैसे कि रचनात्मक तरीके से COALESCE या IS NULL का उपयोग करना। लेकिन मैं अटक गया हूं और इसे समझ नहीं सकता। किसी को कोई विचार आया?
और नहीं, मैं डेटाबेस संरचना को नहीं बदल सकता।
संपादित करें: ruakh का सही विचार है। एकमात्र समस्या अब भाग से ग्रुप कर रही है। मुझे कई हिस्सों द्वारा समूहित करने के लिए LIMIT 1
के आसपास नहीं लग रहा है। कोई विचार?
mdahlman, मैं postgresql में विश्लेषणात्मक कार्यों से परिचित नहीं हूं। इसलिए, यदि वह समाधान एक जटिल क्वेरी से आसान होगा, तो हर तरह से अपना विचार पोस्ट करें।
संपादित करें 2: सहायता के लिए सभी को धन्यवाद। मुझे लगता है कि मुझे जो कुछ करना है, उसके बारे में मुझे काफी समझ है।
आपको यह निर्दिष्ट करना चाहिए कि विश्लेषणात्मक कार्यों की अनुमति है या नहीं। उनके साथ, जवाब सरल होना चाहिए। उनके बिना ... यह कठिन होगा। – mdahlman
क्या कोई सीमा है कि कितने शून्य मूल्य हो सकते हैं? यदि कोई सीमा होगी तो यह कुछ बाएं जुड़ने के साथ एक समाधान होगा .. अच्छा नहीं है लेकिन यह किया जा सकता है;) – rauschen
मुझे नहीं लगता कि एक सीमा है। वास्तव में, फ़ील्ड में से एक में विशाल बहुमत (99% की तरह कुछ) रिकॉर्ड के रूप में पूर्ण है। –