2012-05-08 4 views
1

안녕하세요, 새로운 CLAUSE를 추가하는 데 도움이 필요합니다.이 플러그인은 저에게 상당히 익숙하며 해결할 수 없습니다. // ect.author_id exp_channel_titles table author_id 열을 쿼리하고 최종 결과를 얻기 위해 해당 행을 스캔합니다. IF ect.status = 'Members-id5'AND ect.status = 'complete'...로 결정하려면 ect.entry_id에 대해 Members-id5가있는 행을 사용하십시오. 내 질문은 내가 어떻게 그럴 수 있겠는가? 나는 새로운 결론이나 어쩌면 질의가 있다고 가정하는 곳을 표시했다. 그러나 나는 잘못 될 수있다.LEFT JOIN 쿼리에 추가

내 문제는 최대 5 개의 ect.entry_id가 있으므로 status = Members_id5 인 행에서 하나를 분리하려고 시도하지만 상태 = 완료 인 경우에만 문제가됩니다. 이것은 PHP에서 배열의 어떤 생각을 가지고해야 할 것처럼 보입니다. 당신은 하나 개의 레코드 ect.status = "회원-ID5"와 ect.status는 = "완료"어디 다른이 개인을 찾으려면 같이

SELECT 
      ect.entry_id 
     , ect.author_id 
     , ect.title 
     , ect.status 
     , ecd.field_id_13 
     , ecd.field_id_14 
     , ecd.field_id_15 
     , ecd.field_id_25 
     , ecd.field_id_27 
     , ecd.field_id_28 
     , ecd.field_id_29 
     , ecd.field_id_30 
     , ecd.field_id_31 
     , ecd.field_id_32 
     , ecd.field_id_33 
     , ecd.field_id_34 
     , ecd.field_id_35 
     , exm.email 
    FROM exp_channel_titles as ect 
    LEFT JOIN exp_channel_data as ecd 
     ON ecd.entry_id = ect.entry_id 
    LEFT JOIN exp_members as exm 
     ON exm.member_id = ect.author_id 

// new CLAUSE 

    WHERE ect.title LIKE '%Member%' 
    AND ect.status = 'Members-id5' 
+2

'ect.status ='Members-id5 '및 ect.status ='complete'' 표현이 어떻게 사실 일 수 있습니까? 그것은 논리적으로 모순이다. 무슨 뜻인지 설명해 주시겠습니까? AND 대신 OR을 의미합니까? –

+0

@MarkByers는 새로운 쿼리가 나오는 곳입니다. ect.author_id를 사용하여 exp_channel_titles를 쿼리하여 약 3-5 개의 결과를 얻고 싶습니다. 이 결과로 상태 열을 확인하여 두 행에 하나가 있고 다른 행에 members-id5가 있는지 확인하려고합니다. 사실이라면 members-id5가있는 행을 ect.entry_id에서 사용하십시오. – acctman

답변

1

는 귀하의 의견을 바탕으로 들린다. 그런 다음 SELECT 쿼리를 해당 개인에게만 적용 할 수 있습니다. WHERE 절 내에서 두 개의 하위 쿼리를 사용하여이를 수행 할 수 있습니다. 이런 식으로 뭔가가 :

WHERE ect.title LIKE '%Member%' 
AND ect.author_id IN 
    (select author_id from exp_channel_titles where ect.status = "Members-id5") 
AND ect.author_id IN 
    (select author_id from exp_channel_titles where ect.status = "complete") 

첫 번째 하위 쿼리는 현재 저자 ID 고려 있는지 확인하기 위해 모든 저자 "회원-ID5"로 적어도 하나 개의 기록을 가지고 ID를 거기에, 그리고 IN 절 검사의 목록을 생성합니다 그 중 하나입니다. 두 번째는 "complete"라는 레코드가있는 모든 작성자 ID 목록과 동일합니다. 두 조건이 모두 true이면 개인이 반환하려는 레코드가있는 개인임을 의미합니다.

데이터 구조에 익숙하지 않아 필요한 정확한 코드가 아닐 수 있습니다 (특히 ect.author_id가 실제로 비교할 필드가 아닐 수 있습니다). 그러나 이것이 사용자에게 좋은 아이디어입니다.

2

정확하게 문제를 이해하는 경우 exp_channel_titles 레코드는 status = "Members-id5"이지만 자신의 상태가 "완료"인 다른 레코드가있는 author_id 만 반환하려고합니다. 내가 좋아, 난 당신이 방금 가입해야 믿고있는 경우

번 테이블에 (INNER)는 (외부 남아 있지, 가입 가입) 더 :

그 절
JOIN exp_channel_titles as ect_status ON ect.author_id = ect_status.author_id AND ect.status = 'complete' 

, 기존 쿼리에 추가 상태가 "Members-id5"이지만 상태가 "완료"인 일치 레코드가있는 exp_channel_titles 레코드 만 반환해야합니다.