2012-05-09 13 views
0

私は欲しいデータをほとんど持っていますが、フィルタリングの助けが必要です。 (下の写真)MySQL:クエリ結果[012]

以下のクエリは、ステータスがMember-id5のすべてのレコードを返しますが、フィルタリングする必要があります。例:もし私がectについて簡単な質問をしたとしたら、 (exp_channel_titlesauthor_id 323結果が5件あります。これらの5つの結果のうち1行はstatus = 'Member-id5'、もう1つはstatus = 'complete'およびtitle = %Member%です(これが決定要因です、完全なメンバーとそのメンバーです)。その行が存在する場合は、行status = Member-id5のentry_idを取得してecd(exp_channel_data)内のデータを参照するために使用することができます。どのように私はそれを行うことができますか?絵は絵がAUTHOR_IDとして323で、ちょうどexp_channel_titlesで行わ単純なクエリである

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

を同封します。複数の結果がどのように表示され、どのような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)の行を取得できるかどうかを確認する必要があります。 author_idに%Member%の行があり、その中でMembers-id5の行からentry_idを取得しても構いません。 – acctman

+0

@acctman:その場合、上記の私の更新された答えに示されているように、あなたの 'exp_channel_titles'を2回目のクエリに参加させる必要があります。 – eggyal

関連する問題