2012-05-09 24 views
0

我几乎有我想要的数据...但需要帮助过滤它。 (图底部)MySQL:查询结果[图片]

下面的查询返回状态为Member-id5的所有记录,但我需要过滤。例如:如果我在ect上做了一个简单的查询。 (exp_channel_titlesauthor_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

的图片只是对exp_channel_titles完成的323,作为AUTHOR_ID一个简单的查询。它来显示如何有多个结果,以及我试图得到什么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 = 505嗯...我需要抓住entry_id 496行。它应该使用带有505的行作为entry_id作为引用来检查是否可以抓取带有Members-id5(496)的行。对author_id执行查询,如果有一行含有%Member%,并且完成,那么可以使用其中的成员id5从行中获取entry_id。 – acctman

+0

@acctman:在这种情况下,您需要再次将您的'exp_channel_titles'加入到查询中,如上面更新后的答案中所示。 – eggyal