SQL - Использование LIKE с заполнителем с операторами AND & OR - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь использовать оператор LIKE вместе с подстановочными знаками для проверки похожих совпадений в 2 столбцах в каждой из таблиц [Еда] и [Напитки].

Ниже приведено мое решение, но оно будетне работать.Код ниже: (Я оставил пробел в середине для чтения).

" SELECT DISTINCT r.restname"
    + " FROM restaurants r"
    + " JOIN food f ON f.restid = r.restid"
    + " JOIN drinks d ON d.restid = r.restid"

    + " WHERE f.foodcategory LIKE CONCAT('%', ?, '%')" 
    + " OR f.foodname LIKE CONCAT('%', ?, '%')"
    + " AND d.drinkname LIKE CONCAT('%', ?, '%')" 
    + " OR d.drinkvariety LIKE CONCAT('%', ?, '%')");

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Добавьте ваши слова к '?и проверьте.

    SELECT DISTINCT r.restname
    FROM restaurants r
    JOIN food f ON f.restid = r.restid
    JOIN drinks d ON d.restid = r.restid 
    WHERE (f.foodcategory LIKE CONCAT('%', ?, '%')" OR
    f.foodname LIKE CONCAT('%', ?, '%')) 
    AND (d.drinkname LIKE CONCAT('%', ?, '%') OR
    d.drinkvariety LIKE CONCAT('%', ?, '%'))
0 голосов
/ 04 марта 2019

Вместо этого вы должны использовать exists - как я и предлагал в предыдущем вопросе.

Но ваша проблема в отсутствии скобок:

WHERE (f.foodcategory LIKE CONCAT('%', ?, '%')" OR
       f.foodname LIKE CONCAT('%', ?, '%')
      ) AND
      (d.drinkname LIKE CONCAT('%', ?, '%') OR
       d.drinkvariety LIKE CONCAT('%', ?, '%')
      )
...