यहां मैं यह पूरा करने की कोशिश कर रहा हूं: 1. उपयोगकर्ता तालिका से उपयोगकर्ता आईडी खींचें (document.ownerID उपयोगकर्ता की हैंडल है। हैंडल) 2. उपयोगकर्ताओं के लिए जो एक रिकॉर्ड है कि दस्तावेजों तालिका में पिछले 90 दिनोंएसक्यूएल "जहां मौजूद नहीं है" किसी भी पंक्ति को वापस नहीं कर रहा है
यहाँ के भीतर बनाया गया था न हो क्वेरी मैं अब तक है (मैं एसक्यूएल स्टूडियो प्रबंधन 2012 तक इस चला रहा हूँ):
Select Users.UserID
From Documents
Inner Join Users on documents.OwnerID = users.handle
Where Not Exists
(
Select *
From Documents
Where documents.creationtime >= Dateadd(day, -90, getutcdate())
)
Group by Users.UserID
Order by Users.UserID ASC
आउटपुट में कुछ भी वापस नहीं किया जाता है। हालांकि, जब मैं "मौजूद नहीं है" कथन से "नहीं" को हटाता हूं तो मुझे उन उपयोगकर्ताओं का आउटपुट मिलता है जिनके पास रिकॉर्ड है जो पिछले 90 दिनों के भीतर दस्तावेज़ तालिका में बनाया गया था। साथ ही, अगर मैं "> =" संकेतक को "=" में बदलता हूं तो मुझे आउटपुट भी मिलता है। मुझे लगता है कि समस्या यह है कि मुझे EXIST कथन की दृढ़ समझ नहीं है। मैं आपकी मदद की बहुत सराहना करता हूं।
की मेरी समझ "नहीं मौजूद है" कि है यह क्वेरी सबकुछ वापस कर देगी जो सब-क्वेरी में शामिल नहीं है, क्या यह सही है? इसलिए, यदि उपयोगकर्ता के पास 90 दिनों में कोई रिकॉर्ड नहीं बनाया गया था तो वे मेरी विशिष्ट क्वेरी (गॉर्डन या पाठ्यक्रम द्वारा किए गए संपादन के बाद) में वापस आ जाएंगे, है ना? आपकी सहायता के लिए धन्यवाद. – user2124571
हाँ, आप आमतौर पर अपने मुख्य प्रश्न में EXISTS सबक्वायरी को कनेक्ट नहीं करना चाहते हैं। तो आपके मूल में, आप कह रहे थे "पिछले 90 दिनों के दस्तावेजों में कोई पंक्ति नहीं होने पर मुझे रिकॉर्ड प्राप्त करें।" गॉर्डन में, वह कह रहा है, "मुझे उन सभी रिकॉर्ड्स प्राप्त करें जिनके उपयोगकर्ता के पास पिछले 90 दिनों से संबंधित दस्तावेज़ नहीं है"। उम्मीद है कि यह मदद की। – Aushin
यह बिल्कुल मदद की, धन्यवाद !! – user2124571