2012-11-08 13 views
5

मानना ​​चाहता हूं कि मेरे पास tbl_med नाम की एक तालिका है, जिसमें छह फ़ील्ड हैं: [nom_lab], [nom_desc], [nom_apres], [date_vig], [cod_med], [vr_pmc ]। [Date_vig] [nom_desc], [nom_apres] [nom_lab],,:मैं एक Microsoft Access विज़ार्ड-जेनरेट क्वेरी

  1. क्षेत्रों में से चार के संबंध में डुप्लिकेट रिकॉर्ड खोजें:

    मैं एक एमएस एक्सेस SQL ​​क्वेरी कि होगा चाहते हैं।

  2. सभी छः फ़ील्ड्स (न केवल डुप्लिकेट की जांच के लिए उपयोग किए जा रहे हैं) दिखाएं।

मैं एमएस एक्सेस का इस्तेमाल किया "डुप्लिकेट क्वेरी जादूगर का पता लगाएं" है, जो मेरा पीछा एसक्यूएल दिया:

SELECT tbl_med.[nom_lab], tbl_med.[nom_desc], tbl_med.[nom_apres], tbl_med.[date_vig], tbl_med.[cod_med], tbl_med.[vr_pmc] 
FROM tbl_med 
WHERE tbl_med.[nom_lab] 
IN 
(
    SELECT [nom_lab] 
    FROM [tbl_med] As Tmp 
    GROUP BY [nom_lab], [nom_desc], [nom_apres],[date_vig] 
    HAVING Count(*)>1 

And [nom_desc] = [tbl_med].[nom_desc] 
    And [nom_apres] = [tbl_med].[nom_apres] 
    And [date_vig] = [tbl_med].[date_vig] 

) 
ORDER BY tbl_med.[nom_lab], tbl_med.[nom_desc], tbl_med.[nom_apres], tbl_med.[date_vig]; 

किसी को भी क्यों तीन समझा सकते हैं उपरोक्त क्षैतिज नियम रेखाओं के बीच And स्थितियां आवश्यक हैं?

क्या किसी के पास अधिक सहज ज्ञान युक्त क्वेरी है जो समझना आसान होगा?

+4

वे आवश्यक हैं क्योंकि प्रत्येक रिकॉर्ड की गणना 1 से अधिक है या नहीं, इसलिए यह एक डुप्लिकेट है या नहीं, यह निर्धारित करने के लिए क्वेरी को स्वयं के एक योग संस्करण को संदर्भित करना होगा। मैं इस प्रकार की queires के लिए जादूगर के साथ चिपके रहने की सिफारिश करेंगे। –

उत्तर

1

अनिवार्य रूप से, तीन And खंड वहाँ क्योंकि आप (क्वेरी विज़ार्ड कि आप डुप्लिकेट न सिर्फ [nom_lab] मैदान पर, लेकिन यह भी [nom_desc], [nom_apres], और [date_vig] खेतों पर जांच करने के लिए करना चाहता था कहा था के रूप में आप शुरुआत में कहा गया हैं आपके प्रश्न का)।

उपरोक्त का SELECT [nom_lab] FROM [tbl_med] As Tmp ... HAVING Count(*)>1 भाग उन रिकॉर्ड्स को देखने के लिए कहता है जिनके पास डुप्लिकेट [nom_lab] मान हैं। And खंड तब आपके शेष अनुरोधित डुप्लिकेशंस मानदंडों को प्रभावी रूप से कहकर पूरा करते हैं "डुप्लिकेट [nom_lab] मान रखने के अलावा, मैं केवल उन रिकॉर्डों को देखना चाहता हूं जिनमें इन तीनों अन्य क्षेत्रों ([nom_desc], [nom_apres], और [date_vig]) में डुप्लिकेशंस भी है। भी।"

तो अपने दूसरे प्रश्न का उत्तर देने के लिए, मैं वास्तव में नहीं देख सकता कि आप इसे अधिक सहज ज्ञान के लिए कैसे मजबूर कर सकते हैं। एसक्यूएल कभी-कभी अपने सिर को पाने के लिए एक मुश्किल भाषा है, और किसी भी भाषा की तरह (चाहे वह प्रोग्रामिंग या बोली जाने वाली भाषा हो) इसमें आसानी से पढ़ने में सहज होने से पहले इसके पैटर्न और बारीकियों को सीखने में समय लगता है।