2012-09-06 16 views
10

के अंदर mysql subquery मेरे पास एक क्वेरी है जिसे tbl_emails_sent नामक द्वितीयक तालिका से सबसे हालिया रिकॉर्ड की आवश्यकता है।एक बाएं जॉइन

उस तालिका में ग्राहकों को भेजे गए सभी ईमेल हैं। और अधिकांश ग्राहकों के पास सैकड़ों ईमेल दर्ज किए गए हैं। मैं एक क्वेरी खींचना चाहता हूं जो सबसे हालिया प्रदर्शित करता है।

उदाहरण:

SELECT c.name, c.email, e.datesent 
FROM `tbl_customers` c 
LEFT JOIN `tbl_emails_sent` e ON c.customerid = e.customerid 

मैं एक वाम एक सबक्वेरी के साथ शामिल हों इस्तेमाल किया जाएगा अनुमान लगा रहा हूँ, लेकिन मैं सबक्वेरी में ज्यादा तल्लीन नहीं है। क्या मैं सही दिशा में जा रहा हूं?

वर्तमान में उपरोक्त क्वेरी तालिका में सबसे हालिया रिकॉर्ड निर्दिष्ट करने के लिए अनुकूलित नहीं है, इसलिए मुझे थोड़ी सी सहायता चाहिए।

उत्तर

19

यह ऐसा होना चाहिए, आपको ईमेल भेजने के लिए अधिकतम तिथि (या नवीनतम तिथि) प्राप्त करने के लिए एक अलग क्वेरी की आवश्यकता है।

SELECT a.*, b.* 
FROM tbl_customers a 
      INNER JOIN tbl_emails_sent b 
       ON a.customerid = b.customerid 
      INNER JOIN 
      (
       SELECT  customerid, MAX(datesent) maxSent 
       FROM  tbl_emails_sent 
       GROUP BY customerid 
      ) c ON c.customerid = b.customerid AND 
        c.maxSent = b.datesent 
1

क्या यह काम नहीं करेगा?

SELECT t1.datesent,t1.customerid,t2.email,t2.name 
FROM 
(SELECT max(datesent) AS datesent,customerid 
FROM `tbl_emails_sent` 
) as t1 
INNER JOIN `tbl_customers` as t2 
ON t1.customerid=t2.customerid 

केवल जारी आप तो क्या हुआ अगर दो datesents ही कर रहे हैं, क्या निर्णायक कारक एक उठाया जाता है जो में है है?

संबंधित मुद्दे