mysql - 有没有其他方法可以选择此 case 语句中的值而不是子查询

标签 mysql mariadb

我对 MySQL 有一定程度的了解,但我不确定是否有更正确的方法来完成我在这里所做的事情。

#Select Ticket ID, Ticket Title, Assigned To
SELECT * FROM
    (SELECT
        ti.number, ti.ticket_id, foev.value AS "ticket_name",
        CASE WHEN ti.staff_id = 0 AND ti.team_id = 0
            then
                "** Unassigned **"
            ELSE
                CASE when ti.staff_id = 0
                    THEN
                        (SELECT te.name FROM ost_team te WHERE te.team_id = ti.team_id)
                    ELSE
                        (SELECT CONCAT(st.firstname,LEFT(st.lastname,1)) FROM ost_staff st WHERE st.staff_id = ti.staff_id)
                    END
        END AS "assigned_to"
    FROM ost_ticket ti
        LEFT JOIN ost_form_entry foe ON foe.object_id = ti.ticket_id AND foe.object_type = "T" 
        LEFT JOIN ost_form_entry_values foev ON foev.entry_id = foe.id 
        GROUP BY ti.ticket_id) 
    AS ticket_meta_list 
ORDER BY ticket_id ASC;

是否有更正确的方法来执行这些子查询?我想可能有一些我不太熟悉的连接。

最佳答案

如果您的员工表中没有值为 0 的 staff_id,并且您的团队表中没有值为 0 的 team_id,您可以使用 left joincoalesce结合使用:

SELECT    ti.number,
          ti.ticket_id,
          foev.value AS ticket_name,
          COALESCE(CONCAT(st.firstname,LEFT(st.lastname,1)),
                   te.name, '** Unassigned **') AS assigned_to
FROM      ost_ticket ti
LEFT JOIN ost_form_entry foe 
       ON foe.object_id = ti.ticket_id 
      AND foe.object_type = 'T' 
LEFT JOIN ost_form_entry_values foev 
       ON foev.entry_id = foe.id 
LEFT JOIN ost_team te 
       ON te.team_id = ti.team_id
LEFT JOIN ost_staff st 
       ON st.staff_id = ti.staff_id
GROUP BY  ti.ticket_id 
ORDER BY  ticket_id

关于mysql - 有没有其他方法可以选择此 case 语句中的值而不是子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40751220/

相关文章:

php - mysql 获取数组(LIKE%)

php - 建立与CakePHP数据库的连接时出错

mysql - Windows 8 InnoDB 上的 MariaDB 错误

php - Doctrine2 - 类型时间戳 - 默认值

mysql - 在 WHERE LIKE 子句中选择

php - 从这些表中获取最受欢迎的结果

mysql - 错误的 SQL 语法...未找到列 "COUNT(status)"

mysql优化UPDATE JOIN性能指标

mysql - MariaDB外键问题

php - PDO 和 MariaDB