2013-02-12 48 views
5

के साथ जुड़ती है मैं MySQL का उपयोग कर रहा हूं और मुझे एक चयन क्वेरी से परिणाम प्राप्त करने का प्रयास करने में मुश्किल हो रही है। मेरे पास 3 टेबल हैं। प्रथम तालिका अनुभाग, दूसरा तालिका अनुभाग सदस्य और तृतीय तालिका अनुभाग सदस्य स्थिति (इस तालिका में डेटा स्थिर है)।एकाधिक तालिका WHERE क्लॉज

select * from Sections;

| section_id | title | description | section_ownerid | 
------------------------------------------------------- 
| 1   | title1 | desc1  | 100    | 
| 2   | title2 | desc2  | 100    | 
| 3   | title3 | desc3  | 100    | 
| 4   | title4 | desc4  | 100    | 
| 5   | title5 | desc5  | 100    | 
| 6   | title6 | desc6  | 100    | 

select * from SectionMembers;

| SectionMembers_id | section_id | status_code | memberid | 
------------------------------------------------------------ 
| 1     | 1   | 10   | 200  | 
| 2     | 1   | 20   | 300  | 
| 3     | 2   | 30   | 200  | 
| 4     | 2   | 10   | 300  | 
| 5     | 3   | 30   | 200  | 
| 6     | 4   | 20   | 200  | 

select * from MemberStatus;

| MemberStatus_id | status_code | status   | 
--------------------------------------------------- 
| 1    | 10   | PENDINGMEMBER | 
| 2    | 20   | ACTIVEMEMBER | 
| 3    | 30   | MEMBERREJECTED | 

मैं प्रयोग किया जाता के रूप में

select distinct(a.section_id) as id, 
     a.title, 
     a.description, 
     c.status 
from Sections a 
left join SectionMembers b on a.section_id = b.section_id 
inner join MemberStatus c on b.status_code = c.status_code 
where (a.section_ownerid = 100 and b.memberid = 200) 
     or (a.section_ownerid = 100); 

परिणाम पाने के लिए मिलती है लेकिन मैं सही परिणाम नहीं मिल रहा है।

| section_id | title | description | status   | 
------------------------------------------------------ 
| 1   | title1 | desc1  | PENDINGMEMBER | 
| 2   | title2 | desc2  | ACTIVEMEMBER | 
| 3   | title3 | desc3  | MEMBERREJECTED | 
| 4   | title4 | desc4  | ACTIVEMEMBER | 
| 5   | title5 | desc5  | NULL   | 
| 6   | title6 | desc6  | NULL   | 

उत्तर

11

यह निम्न क्वेरी की तरह लगता है अपडेट किया गया है कि तुम क्या जरूरत है। ध्यान दें कि memberid = 200 के लिए फिल्टर में शामिल होने के हालत के लिए ले जाया गया है:

select s.section_id, 
    s.title, 
    s.description, 
    m.status 
from Sections s 
left join SectionMembers sm 
    on s.section_id = sm.section_id 
    and sm.memberid = 200 
left join MemberStatus m 
    on sm.status_code = m.status_code 
where s.section_ownerid = 100; 

नोट: यदि आपका वांछित परिणाम से पता चलता है, जबकि कि section_id=2ActiveMember की स्थिति आपकी नमूना डेटा में कोई रास्ता नहीं करने के लिए इस मूल्य लिंक बनाने के लिए है खंड 2.

इस क्वेरी परिणाम देता है:

| SECTION_ID | TITLE | DESCRIPTION |   STATUS | 
------------------------------------------------------ 
|   1 | title1 |  desc1 | PendingMember | 
|   2 | title2 |  desc2 | MemberRejected | 
|   3 | title3 |  desc3 | MemberRejected | 
|   4 | title4 |  desc4 | ActiveMember | 
|   5 | title5 |  desc5 |   (null) | 
|   6 | title6 |  desc6 |   (null) | 
+0

यह अच्छी तरह से पूरी तरह से काम किया। धन्यवाद ब्लूफेट। – Bhargav

+0

@ भार्गवबोनू आपका स्वागत है! :) – Taryn

+0

मदद मिली! धन्यवाद !! 1 – normalUser

0

ये रहा:

SELECT s.section_id, s.title, s.description, ms.status 
FROM Sections as s 
LEFT JOIN SectionMembers as sm ON s.section_id = sm.section_id 
LEFT JOIN MemberStatus as ms ON ms.status_code = sm.status_code 
WHERE (s.section_ownerid = 100 and sm.memberid = 200) 
    OR (s.section_ownerid = 100) 
GROUP BY section_id 

नोट: जैसा कि नीचे दिखाया मैं परिणाम चाहते मेरा उत्तर

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

  • कोई संबंधित समस्या नहीं^_^