次のSQLステートメントを作成しようとしています。
SELECT `users_table`.*, `users_data`.`first_name`, `users_data`.`last_name`
FROM `users_table`
INNER JOIN `users_data` ON users_table.id = user_id
WHERE (users_table.username LIKE '%sc%')
OR (users_data.first_name LIKE '%sc%')
OR (users_data.last_name LIKE '%sc%')
現在、次のコードがあります。
public function findAllUsersLike($like) {
$select = $this - > select(Zend_Db_Table::SELECT_WITH_FROM_PART) - > setIntegrityCheck(false);
$select - > where('users_table.username LIKE ?', '%'.$like.'%');
$select - > where('users_data.first_name LIKE ?', '%'.$like.'%');
$select - > where('users_data.last_name LIKE ?', '%'.$like.'%');
$select - > join('users_data', 'users_table.id = user_id', array('first_name', 'last_name'));
return $this - > fetchAll($select);
}
これは近いですが、の代わりにステートメントAND
を追加するために使用するため、正しくありません。WHERE
OR
1つの選択としてこれを行う方法はありますか?または、3つの選択を実行して結果を組み合わせる必要がありますか(オーバーヘッドが大幅に増加しますか?)?
PS$like
過去のパラメーターはサニタイズされているので、上記のコードでのユーザー入力について心配する必要はありません。