如果您熟悉 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/