データベースからいくつかのレコードを選択する次のクエリがあります。
$select_person = $this->select()
->setIntegrityCheck(false)
->from(array('a' => 'tableA'),
array(new Zend_Db_Expr('SQL_CALC_FOUND_ROWS a.id'),
'a.cid',
'a.email',
'final' => new Zend_Db_Expr( "concat( '<div
style=\"color:#1569C7; font-weight:bold\">',
a.head , ' ' , a.tail, '</div>')" ),
'a.red_flag'
)
)
->joinLeft(array('b' => 'tableb'), ... blah blah)
->where('blah blah')
->order('a.head ASC')
'final'
の値に応じて異なる値を選択するように上記のクエリを変更したい
a.red_flag.
true または false の値を持つことができます。
mysql の CASE ステートメントを使用できることを理解しています。たとえば、次のようなものです。
'final' => new Zend_Db_Expr("CASE a.red_flag WHEN 'true' THEN '$concatstr1'
ELSE '$concatstr2' END")
の値$concatstr1 = "concat( '<div style=\"color:red; font-weight:bold\">', a.head , ' ' , a.tail, '</div>')" ;
の値$concatstr2 = "concat( '<div style=\"color:blue; font-weight:bold\">', a.head , ' ' , a.tail, '</div>')" ;
ただし、次のエラーがスローされます
メッセージ: SQLSTATE[42000]: 構文エラーまたはアクセス違反: 1064 SQL 構文にエラーがあります。1 行目の 'div style="color:red; font-weight:bold">', a.head , ' ' , ' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
このクエリを機能させるにはどうすればよいですか? どんな助けでも大歓迎です。
ありがとう