2012-05-09 3 views
0

나는 원하는 데이터를 거의 가지고있다. 그러나 필터링하는데 도움이 필요하다. (하단 그림)MySQL : 쿼리 결과 [그림]

아래 쿼리는 Member-id5라는 상태의 모든 레코드를 반환하지만 필자는이를 필터링해야합니다. 예 : 요법에 대한 간단한 쿼리를 작성한 경우 (exp_channel_titles) author_id 323 결과가 5 개가됩니다. 그 5 개의 결과 중 하나의 행은 status = 'Member-id5'이고 다른 하나는 status = 'complete'title = %Member%입니다. 이는 결정 요소이며, 전체와 구성원이있는 행입니다. 그 행이 존재한다면 행 status = Member-id5의 entry_id를 가져 와서 ecd (exp_channel_data)에서 데이터를 찾는 데 사용할 수 있습니다. 내가 어떻게 할 수 있는지에 대한 생각은? 사진

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 
WHERE ect.status = 'Members-id5' 

enter image description here

사진은 단지 author_id로 323의, exp_channel_titles에서 수행 간단한 쿼리이다

를 동봉. 그것의 다중 결과를 보여주는 방법과 entry_id 내 쿼리를 완료하기 위해 노력하고있어. entry_id 496은 내가 원했던 것이며, 1. % Member %가있는 행이 있고 그 행이 완료되었습니다. 그리고 496 행은 Members-id5의 상태를가집니다.

답변

1
SELECT ... 
FROM exp_channel_titles as ect 
    JOIN exp_channel_titles as ect2 
    ON (
      ect2.author_id = ect.author_id 
     AND ect2.title LIKE '%Member%' 
     AND ect2.status = 'complete' 
    ) 
    ... 
WHERE ect.status = 'Members-id5' 
+0

결과는 entry_id = 505hmm ... entry_id 496 행을 가져와야합니다. 그것은 entry_id를 참조로 505 행을 사용하여 그 행에 Member-id5 (496)가있는 행을 가져올 수 있는지 확인해야합니다. % Member %가있는 행이있는 경우 author_id에 대한 쿼리를 수행하고 그 다음에 Member-id5가있는 행에서 entry_id를 가져 오면 정상적으로 완료됩니다. – acctman

+0

@acctman :이 경우, 위의 업데이트 된 대답에 표시된 것처럼'exp_channel_titles'을 쿼리에 다시 참여시켜야합니다. – eggyal