mysql - 添加到 LEFT JOIN 查询

标签 mysql

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

我的问题是最多有 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'

最佳答案

如果我对您的问题的理解正确,您只想返回 exp_channel_titles 记录,其中 status = "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'

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

关于mysql - 添加到 LEFT JOIN 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10506454/

相关文章:

php - phpMyAdmin 的 20,000 行限制的修复或迁移是什么?有什么真正不稳定的地方吗?

MySQL 连接器和许可

mysql - 如何中止 MySql 触发器中的 INSERT 操作?

mysql - 如何获取不在下一个表mysql中的数据

mysql - belongs_to 和引用实际上在表中创建关系吗?

php - 当输入通过json变量传递时,mysql中的输出为0

php - 尝试使用 PDO 语句将结果显示在表上

php - 如何构建基本的 "To-Do"列表样式网站

MySQL/MariaDB 在使用 utf8mb4 时无法处理唯一键

php - MySQL PDO 查询优化