2017-01-18 5 views
0

あなたがOSTicketをよく知っているなら、それは私が作業しているデータベースです。エントリごとに1つの行に結合する必要がある特定のフィールドを取得するにはどうすればいいですか?

私は

ticket_id, ticket_number, custom_field_1_value, custom_field_2_value 

form_entry_values(含まれています(私はreadabilitiesのために、この内の実際のフィールド名を使用していないが、私は一貫しそれを保管しております)行ごとに以下の情報を取得しようとしています:た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 

のように一つのフィールドを取得します(ジョイン2で)簡単にすることができるよ、私はそれを行う方法を見つけ出すことはできません私が望む2つのフィールドについては、それでもticket_idごとに1つの行に表示されます。

答えて

1

あなたは非常に近いです。そのform_entry_valuesテーブルの他のレコードをチケットのために取得したいので、そのチケットに何回も参加する必要があります。毎回、joinの一部の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 
+0

これはうまく動作しますが、v1とv2.custom_field_valuesでMAXを使用して最終的に正しくグループ化する必要がありました – Trel

関連する問題