Я пытаюсь написать запрос для следующего ...MySQL несколько аргументов запрос
SELECT SQL_CALC_FOUND_ROWS * FROM calls
WHERE id IS NOT NULL
AND account_name LIKE '%$account_search%'
AND name LIKE '%$adv_term_det%' OR description LIKE '%$adv_term_det%'
AND type != 'online'
AND marked_completed_by = ''
ORDER BY $sort_by DESC LIMIT $page_position, $item_per_page
Но результаты не являются ожидаемыми значениями. Линия я подозреваю, что вызывает вопрос есть ..
AND name LIKE '%$adv_term_det%' OR description LIKE '%$adv_term_det%'
Что я подозреваю, должен быть подзапрос, но после нескольких попыток использовать IN я не смог заставить его работать.
SELECT SQL_CALC_FOUND_ROWS * FROM calls
WHERE call_ref IN
(SELECT call_ref FROM calls
WHERE name LIKE '%$adv_term_det%' OR description LIKE '%$adv_term_det%'
)
AND id IS NOT NULL
AND account_name LIKE '%$account_search%'
AND type != 'online'
AND marked_completed_by = ''
ORDER BY $sort_by DESC LIMIT $page_position, $item_per_page;
В основном я хочу, чтобы вернуть все записи, которые соответствуют всем другим критериям и имеют $adv_term_det
либо name
или description
, а также.
Если я использую только AND name LIKE '%$adv_term_det%'
я получаю результаты я ожидаю для этого запроса, и также, если я использую только AND description LIKE '%$adv_term_det%'
, но мне нужно, чтобы найти записи, которые имеют "%$adv_term_det%'
в любой name
или description
Спасибо, отлично работает. Я действительно работаю и развиваюсь каждый день. Я знал о добавлении круглых скобок для запросов на других языках, но не знал, что вы тоже можете использовать их в SQL. Просто из любопытства вы можете уточнить, что вы подразумеваете под параметрами, а не переменными? – tatty27
Хммм. , , Место для начала - с параметризованными запросами. Это важно, когда вы занимаетесь разработкой приложений. Если вы сейчас играете, то это может быть путаница. Однако в какой-то момент вы должны узнать о SQL Injection, динамическом SQL и параметризованных запросах. –