sql - Mysql : How to know the value of a field at date (audit table) -
मेरे पास एक फ़ील्ड opt_out फ़ील्ड के साथ संपर्क है।
क्षेत्र opt_out में 'वाई' , 'एन' और नल।
मेरे पास फ़ील्ड के साथ एक तालिका CONTACT_AUDIT है
तारीख contact_id field_name value_after value_after जब मैं जोड़ता हूं एक नया संपर्क, CONTACT तालिका में एक नई पंक्ति जोड़ दी जाती है, CONTACT_AUDIT तालिका में कुछ भी नहीं।
जब मैं कोई संपर्क संपादित करता हूं, उदाहरण के लिए यदि मैं opt_out फ़ील्ड का मूल्य NULL से 'वाई' में बदलता हूं, तो opt_out CONTACT तालिका में फ़ील्ड वैल्यू बदल दी जाती है और CONTACT_AUDIT तालिका में मूल्यों के साथ एक नई पंक्ति जोड़ दी जाती है
date = now () contact_id = & lt; मेरे संपर्क का आईडी & gt; फ़ील्ड_नाव = 'opt_out' value_before = null value_after = 'y' मुझे उन संपर्कों को जानना होगा जो opt_out = 'Y' को किसी दिए गए दिनांक में।
I इसे करने की कोशिश की:
SELECT count (*) एएस एनबी से संपर्क सी WHERE (- संपर्क अब ऑप्टआउट किया गया है और इसे कभी भी संशोधित नहीं किया गया है c.optout = 'Y' और c.id नहीं (संपर्क से संबंधित संपर्क_दत से संपर्क करें, जहां से फ़ील्ड_नाम = 'ऑप्टआउट')) या (- हम उन संपर्कों पर विचार करते हैं, जहां संपर्कों की तारीख से अंतिम पंक्ति ऑप्टआउट = 'वाई' सी.आईडी में है (संपर्क ca.contact_id से संपर्कों_डॉइट सीए) '2014-07-24' और DATE_ADD ('2014-07-24', अंतराल 1 दिन) और फ़ील्ड_नाम = 'ऑप्टआउट' ORDER द्वारा date_created LIMIT 1)) लेकिन mysql नहीं करता है
इसलिए मैंने कोशिश की है:
SELECT count (*) एएस एनबी से संपर्क सी WHERE (- संपर्क अब ऑप्टआउट है और कभी नहीं किया गया है C.optout = 'Y' और c.id से पहले संशोधित (संपर्क का चयन करें contact_id से contact_audit WHERE field_name = 'op टॉउट ')) या (- हम उन संपर्कों पर विचार करते हैं, जहां संपर्कों में आने वाली अंतिम पंक्ति ऑप्ट-आउट =' वाई 'सी.आईडी में है (संपर्क सीडब्ल्यू.कैक्टैक्ट_आईड से संपर्कों_डॉइट सीए) जहां' 2014-07-24 'और' DATE_ADD ' '2014-07-24', अंतराल 1 दिन) और फील्ड_नाम = 'ऑप्टआउट' होविंग मैक्स (तारीख_कैटेड))) क्वेरी चलती है, लेकिन अब, मुझे नहीं पता कि कैसे पता है कि subquery मान से संबंधित मूल्य 'वाई' या 'एन' है यदि मैं 'वाई' मानों के लिए केवल एक 'WHERE' क्लॉज जोड़ता हूं, तो 'एन' मानों को भंग किया जाएगा और मुझे यह नहीं पता चलेगा कि क्या अंतिम मूल्य 'वाई' या 'एन' था ...
आपकी मदद के लिए धन्यवाद
अगर मैं आपकी समस्या को ठीक से समझता हूं तो आप संघ। मैं इसे अभी परीक्षण करने के लिए mysql नहीं है, लेकिन कोड ऐसा कुछ हो सकता है मुझे बताएं कि क्या यह मददगार है
c.id चुनें, c.optout जहां c.optout = 'y' और c.id नहीं है (संपर्कों से संपर्क का चयन करें contact_audit WHERE field_name = 'optout') यूनिअन सीआईआईडी, सी.ओ.टी.टी. का चयन करें जहां सी.आई.डी. इन (सेलेक्ट सी.ओ. कॉन्टैक्ट_आईड से कॉन्टैक्ट_ओडिट सीए) जहां '2014-07-24' और 'DATE_ADD' ('2014-07-24', इंटरवल 1 दिन) और फील्ड_नाम = 'ऑप्टआउट' होने वाला है MAX (date_created))
Comments
Post a Comment