2016-01-29 2 views
-1

Я хотел бы сравнить два столбца like:право синтаксиса использовать вблизи «% + ads.title +% г п и г п products_request

$sql = "SELECT 
       products_requests.id as req_id,ads.id as send_id, 
       products_requests.user_id,ads.des,ads.title 

       FROM 
       products_requests,ads 

       WHERE 
        products_requests.title LIKE '%'+ads.title+'%' 
        AND 
        products_requests.ads_cat_id = ads.ads_cat_id 
        AND 
        products_requests.ads_sub_cat_id = ads.ads_sub_cat_id 
        AND 
        products_requests.price_type_id = ads.price_type_id 
        AND 
        products_requests.province_id = ads.province_id 
        AND 
        products_requests.city_id = ads.city_id"; 

, но я получаю эту ошибку:

«у вас есть ошибка в вашем SQL синтаксиса, обратитесь к руководству, что соответствует версии сервера MySQL для правильного синтаксиса использовать около«% + ads.title +% \ г \ п и \ г \ п products_request 'по строке 9 "

ответ

1

В MySQL, выполнять операции конкатенации строк с CONCAT функции

... LIKE CONCAT('%',ads.title,'%') 

Я также рекомендую вам канаву старой школы запятая синтаксис для операции соединения и использовать JOIN ключевое слово вместо этого. И переместите предикаты соединения в предложение ON. И рассмотрите использование более коротких псевдонимов таблицы, чтобы квалифицировать ссылки на столбцы.

SELECT req.id AS req_id 
     , ads.id AS send_id 
     , req.user_id 
     , ads.des 
     , ads.title 
    FROM products_requests req 
    JOIN ads 
     ON req.title  LIKE CONCAT('%',ads.title,'%') 
    AND req.ads_cat_id  = ads.ads_cat_id 
    AND req.ads_sub_cat_id = ads.ads_sub_cat_id 
    AND req.price_type_id = ads.price_type_id 
    AND req.province_id = ads.province_id 
    AND req.city_id  = ads.city_id 
Смежные вопросы