mysql - 如何将特定字段(需要连接)放入每个条目的一行中

标签 mysql

如果您熟悉 OSTicket,这就是我正在使用的数据库。

我试图获取每行的以下信息(为了可读性,我没有使用实际的字段名称,但我保持一致)

ticket_id, ticket_number, custom_field_1_value, custom_field_2_value

form_entry_values (contains: entry_id, custom_field_number, custom_field_value)

form_entry (contains: entry_id, ticket_id)

field (contains: field_id)

ticket (contains: ticket_id, ticket_number)

我能够轻松地(通过两个连接)获得一个字段,如下所示

SELECT t.ticket_id,
    t.ticket_number,
    v.custom_field_value
FROM ticket t
LEFT JOIN form_entry e
    ON e.ticket_id = t.ticket_id
LEFT JOIN form_entry_values v
    ON v.entry_id = e.entry_id
WHERE v.custom_field_number = 1

我不知道如何为我想要的两个字段执行此操作,但仍然将其放在每个 Ticket_id 的单行上。

最佳答案

你们很接近。由于您想要从该工单的 form_entry_values 表中获取其他记录,因此您需要多次加入该表。每次,您都可以在连接的 ON 部分指定 custom_field_number,这样您的 WHERE 就不会变得很粗糙。

SELECT t.ticket_id,
    t.ticket_number,
    v1.custom_field_value
    v2.custom_field_value
FROM ticket t
LEFT JOIN form_entry e
    ON e.ticket_id = t.ticket_id
LEFT JOIN form_entry_values v1
    ON v1.entry_id = e.entry_id
    AND v1.custom_field_number = 1
LEFT JOIN form_entry_values v1
    ON v2.entry_id = e.entry_id
    AND v2.custom_field_number = 2

关于mysql - 如何将特定字段(需要连接)放入每个条目的一行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41726923/

相关文章:

mysql - 从 ibdata1、ib_logfile0、ib_logfile1 和 .frm 文件恢复数据库

php - MySQL 或 PHP : Find optimum combination of rows based on score

php - Wampserver升级问题

mysql - SQL 查询 4 ​​方式加入以查找谁不在那里

php - 结果集在数组中时如何查找数据?

php - tr bgcolor 取决于行值

mysql - 在 Adonisjs 和 MySQL 中生成 UUID 不工作

mysql - MySQL服务器主到主复制时出错

mysql - 如何删除MySQL InnoDB中的所有相关记录?

mysql - 如何使联合表在 MariaDB 重新启动之间保持不变?