如果您熟悉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的单行中获取它。
答案 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