2016-09-22 15 views
1

私は複数のフィールドに対してmysqlクエリをコーディングしましたが、結果はすべてのフィールドに一致する必要があります。以下は、私のコードは、検索クエリが機能しない

SELECT e.es_id, e.es_sex, e.service_type, e.working_name, d.es_age, d.es_city, d.es_regional_city 
FROM escorts AS e 
INNER JOIN escorts_details AS d ON e.es_id = d.es_id 
WHERE es_sex LIKE '%" . $es_sex . "%' 
AND category LIKE '%" . $category ."%' 
AND es_city LIKE '%" . $es_city ."%' 
AND es_regional_city LIKE '%" . $es_regional_city ."%'"; 

であると私はすべてのフィールド..

SELECT e.es_id, e.es_sex, e.service_type, e.working_name, d.es_age, d.es_city, d.es_regional_city 
FROM escorts AS e 
INNER JOIN escorts_details AS d 
ON e.es_id = d.es_id 
WHERE es_sex LIKE '%male%' 
AND category LIKE '%waitresses%' 
AND es_city LIKE '%7%' 
AND es_regional_city LIKE '%%' 

あなたがexcutedクエリが表示されます場合は、そのはまだ、女性の詳細を示すを充填した後、このコードを実行するmのとき、私は満たされています"男性"(es_sex LIKE '%男性%')。

私は何が間違っているのか分かりません。

私を助けてください。

ありがとうございました。

+1

'female'はLIKE'%male% 'です。 'es_sex = 'male''を試してください – AbraCadaver

+0

AbraCadaver @その働きに感謝します。 – Arvind

答えて

2

%は任意の文字列を表すためです。だからあなたのケースでは、%男性%は実際には '女性'を意味することができます。ここで 'fe'は最初の%の代わりに置かれます。ただ、このように、%を削除し、es_sex =「男性」と言う:

SELECT e.es_id, e.es_sex, e.service_type, e.working_name, d.es_age, d.es_city, d.es_regional_city 
FROM escorts AS e 
INNER JOIN escorts_details AS d 
ON e.es_id = d.es_id 
WHERE es_sex ='male' 
AND category LIKE '%waitresses%' 
AND es_city LIKE '%7%' 
AND es_regional_city LIKE '%%' 
+0

皆さん、ありがとうございます! – Arvind

0

まずあなたがLIKE=が等しくない理解する必要があります。この場合のLIKE(両側に%がある)は、キーが特定の列のどこにあっても真を返します。つまり、値の男性の場合、%male%がtrueになることがあります。

記号%は、任意の文字または文字グループが存在する可能性があることを示します。

この場合、es_sex='male'を使用する必要があります。

0

whereの近くで構文エラーに直面すると思います。

「。」とともに表名を選択してみてください。

SELECT e.es_id, e.es_sex, e.service_type, e.working_name, d.es_age, d.es_city, d.es_regional_city FROM escorts AS e INNER JOIN escorts_details AS d ON e.es_id = d.es_id WHERE e.es_sex LIKE '%male%' AND e.category LIKE '%waitresses%' AND e.es_city LIKE '%7%' AND e.es_regional_city LIKE '%%' 

下記のようなフィールド名(テーブルname.field名)と有鉛私は親切にテーブル名に対応するフィールド名を参照し、e.field-名として護衛テーブル名が含まれています。

私は正しい答えを得ることを望みます。私にあなたのフィードバックを与えてください。幸せなコーディング。

関連する問題