如何将每个条目的特定字段(需要连接)转换为单行

时间:2017-01-18 18:32:58

标签: mysql

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

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

ticket_id, ticket_number, custom_field_1_value, custom_field_2_value
  

form_entry_values(包含:entry_id,custom_field_number,custom_field_value)

     

form_entry(包含:entry_id,ticket_id)

     

字段(包含:field_id)

     

票证(包含: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的单行中获取它。

1 个答案:

答案 0 :(得分:1)

你非常接近。由于您希望从该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