2013-09-26 3 views
5

के साथ जुड़ें मेरे पास निम्न तालिका है जो तालिका से विशिष्ट पोस्ट लौटाती है। जैसा कि उम्मीद है कि यह 11 पंक्तियां देता है।MYSQL IN खंड

-- SQL gives 11 rows 
select p.ID from wp_posts p where p.ID IN (2596, 2597, 2598, 2600, 2849, 2928, 2851, 2852, 3011, 2854, 2855); 

मेरे पास दूसरी तालिका 'wp_raceresult' है जो किसी व्यक्ति के रेस परिणाम रिकॉर्ड करती है। व्यक्ति के पास इस तालिका में केवल 7 परिणाम हैं। मैं दौड़ के इस सेट में सभी दौड़ परिणामों के विवरण को एक विशिष्ट धावक के लिए प्राप्त करना चाहता हूं, यानी प्रत्येक दौड़ के लिए न्यूल जहां कोई परिणाम नहीं है। एसक्यूएल मेरे पास एटीएम केवल मेल खाने वाली पंक्तियों का परिणाम है।

-- SQL only gives 7 rows 
select p.ID,rr.leaguepoints from wp_posts p 
join wp_raceresult rr on p.id=rr.race 
where p.ID IN (2596, 2597, 2598, 2600, 2849, 2928, 2851, 2852, 3011, 2854, 2855) 
and runner=7 

मैंने पूर्ण बाहरी, बाएं, दाएं खंड और एक यूनियन का उपयोग करने की कोशिश की है लेकिन सफलता के बिना। कोई उपाय?

उत्तर

1

साथ कोशिश कर सकते हैं जब से तुम उल्लेख किया है आप पहले से ही LEFT JOIN की कोशिश की और परिणाम आप मिल गया है कि अगर आप जिसकी उम्मीद नहीं करते हैं, ऐसा इसलिए है क्योंकि आप अंतिम परिणाम में runner = 7 के लिए पूछताछ कर रहे हैं। ON खंड पर कथन को ले जाएं और यह काम करेगा।

SELECT p.ID, 
     rr.leaguepoints 
FROM wp_posts p 
     LEFT JOIN wp_raceresult rr 
      ON p.id = rr.race AND 
       rr.runner = 7        -- <<=== move it here 
WHERE p.ID IN (2596, 2597, 2598, 2600, 2849, 2928, 2851, 2852, 3011, 2854, 2855) 

अतिरिक्त जानकारी:

-1

आप एक टेबल से सारे रिकॉर्ड, और संदर्भ तालिका में डेटा मिलान की जरूरत है आप LEFT JOIN

select 
    p.ID, 
    rr.leaguepoints 
    from wp_posts p 
    LEFT join wp_raceresult rr on p.id=rr.race 
    where p.ID IN (2596, 2597, 2598, 2600, 2849, 2928, 2851, 2852, 3011, 2854, 2855) 
    and runner=7 
संबंधित मुद्दे