0

私のクエリは、チケットごとに複数の行を提供します。すべてのカスタム値を 1 行にリストしたいと考えています。データベースにクエリを実行するときに、それぞれに対して複数の行ではなく、val.valueそれぞれに対して列としてリストしたいticket_idticket_id

val.value代わりに as 列を出力に表示したい。

SELECT 
ticket.ticket_id,ticket.`number`,ticket.dept_id,val.field_id,val.value,
ticket.staff_id,ticket.team_id,user.name,   dept.dept_name,status.state,status.name as 
status,ticket.source,ticket.isoverdue,ticket.isanswered,ticket.created 
FROM ost_TICKET ticket 
LEFT JOIN ost_ticket_status status ON status.id = ticket.status_id 
LEFT JOIN ost_user user ON user.id = ticket.user_id 
LEFT JOIN ost_department dept ON ticket.dept_id=dept.dept_id 
LEFT JOIN ost_form_entry entry ON ticket.ticket_id = entry.object_id 
LEFT JOIN ost_form_entry_values val ON entry.id = val.entry_id

出力は次のとおりです。

ticket_id,number,dept_id,field_id,value,staff_id,team_id,name,dept_name,state,status,source,isoverdue,isanswered,created

4, 587202,4,3,NULL,15,0,Mark D,SalesDep,open,Open,Phone,0,0,10/14/2014 9:09 4, 587202,4,4,NULL,15,0 ,Mark D,SalesDep,open,Open,Phone,0,0,10/14/2014 9:09 4, 587202,4,87,NULL,15,0,Mark D,SalesDep,open,Open,Phone,0 ,0,10/14/2014 9:09 4, 587202,4,117,NULL,15,0,Mark D,SalesDep,open,Open,Phone,0,0,10/14/2014 9:09 4, 587202, 4,20,養魚場,15,0,Mark D,SalesDep,open,Open,Phone,0,0,10/14/2014 9:09 4, 587202,4,22,Normal,15,0,Mark D ,SalesDep,open,Open,Phone,0,0,10/14/2014 9:09 4, 587202,4,73,nya-08-211,15,0,Mark D,SalesDep,open,Open,Phone, 0,0,10/14/2014 9:09 4, 587202,4,74,88,15,0,Mark D,SalesDep,open,Open,Phone,0,0,10/14/2014 9:09 4 , 587202,4,84,Bara,15,0,Mark D,SalesDep,open,Open,Phone,0,0,10/14/2014 9:09 4, 587202,4,85,シャバ,15,0, Mark D,SalesDep,open,Open,Phone,0,0,10/14/2014 9:09 4, 587202,4,86,Kolkata,15,0,Mark D,SalesDep,open,Open,Phone,0, 0,10/14/2014 9:09 4, 587202,4,165,Tango,15,0,Mark D,SalesDep,open,Open,Phone,0,0,10/14/2014 9:09

4

2 に答える 2

0

それは単なる推測です(OPはテーブルスキーマを提供していないため):

JOIN1 つのチケット行に対して複数の行があるテーブルの 1 つの中にある場合、チケットに対して 2 つの行があります (たとえば、2 つの電子メール)。

また、クエリの結合が間違っています:

LEFT JOIN ost_email email ON user.id = email.email_id

私はそれがすべきだと思います:

LEFT JOIN ost_email email ON user.id = email.user_id

編集: 使用してみることができますDISTINCTが、結果のデータが問題ないかどうかを確認する必要があります。

于 2015-08-06T10:07:10.043 に答える