1

誰かが次のことを手伝ってくれることを願っています。ユーザー固有の検索機能を作成しようとしています。誰かがログインすると、検索を実行して、customer_refまたはorder_details列のいずれかから結果を返すことができます。

次のことを試しましたが、さまざまな顧客からの結果が返されます。

SELECT *
FROM `job` 
WHERE c_name = 'John Doe'
AND customer_ref LIKE '%do%'
OR order_details LIKE '%do%'

結果を特定の顧客に限定したい(明らかな理由で)。一番下の行()を削除するOR order_details LIKE '%do%'と、結果は顧客に正しくロックされますが、そこにあると、他の顧客名を含む結果が得られます。

%do%これは、ドアまたはドリーン(テスト用)を示す単なるワイルドカード検索用語であることに注意してください。実際のコードでは、検索ボックスに入力された値になります。

よろしくお願いします!

4

2 に答える 2

2

検索する用語を明確にするために、クエリに丸括弧を含める必要があります。

SELECT *
FROM `job` 
WHERE c_name = 'John doe'
AND (customer_ref LIKE '%do%'
OR order_details LIKE '%do%')
于 2012-04-07T10:32:54.310 に答える
0

たとえば、CONCAT を使用してみてください。

SELECT *
FROM job 
WHERE job.c_name = 'John doe' AND
(job.customer_ref LIKE CONCAT '%do' 
OR job.order_details LIKE CONCAT '%do')
于 2012-04-07T11:53:56.143 に答える