1

嗨,我需要帮助添加一个新的 CLAUSE,这对我来说非常先进,我无法弄清楚。//使用ect.author_id查询 exp_channel_titles 表 author_id 列并扫描这些行以获得最终结果。由 IF ect.status = 'Members-id5' AND ect.status = 'complete'... 确定,然后使用带有 Members-id5 的行作为 ect.entry_id。我的问题是我该怎么做?我标记了我假设新 CLAUSE 甚至查询会去的地方,但我可能是错的。

我的问题是最多有 5 个不同的 ect.entry_id 所以我试图用 status = Members_id5 隔离行中的一个,但前提是 status = complete 也存在。这似乎是我必须在 PHP 中用数组做的任何想法?

    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'
4

2 回答 2

2

如果我正确理解您的问题,您只想返回exp_channel_titlesstatus = "Members-id5" 但其 author_id 存在另一条状态为“Complete”的记录的记录。

如果我有这个权利,我相信你只需要在桌子上再次加入(INNER JOIN,而不是 LEFT(外)JOIN):

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

添加到现有查询的该子句应仅返回exp_channel_titles状态为“Members-id5”但具有匹配记录且状态为“完成”的记录。

于 2012-05-08T21:53:01.163 回答
1

根据您的评论,听起来您想找到有一条记录 where ect.status = "Members-id5" 和另一条记录 where ect.status = "complete" 的个人。然后,您希望 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 的列表,这些 ID 中至少有一条带有“Members-id5”的记录,IN 子句检查当前正在考虑的作者 ID 是否是其中之一。第二个对具有“完整”记录的所有作者 ID 的列表执行相同操作。如果这两个条件都为真,那么这意味着该个人是您想要返回其记录的人。

我不熟悉您的数据结构,因此这可能不是您需要的确切代码(特别是 ect.author_id 可能实际上不是要比较的字段),但希望这能给您带来想法。

于 2012-05-08T21:32:05.337 回答