Как использовать оператор AND, если внутри выражения может быть null
Есть следующий запрос (обратите внимание на последние 2 строки с AND, мой вопрос о них):
SELECT type.object_id, type.term_taxonomy_id as type_id, industry.term_taxonomy_id as industry_id
FROM wp_term_relationships type
INNER JOIN wp_term_relationships industry ON type.object_id = industry.object_id
WHERE type.object_id = industry.object_id
AND type.term_taxonomy_id = $_GET['type']
AND industry.term_taxonomy_id = $_GET['industry'] // если здесь GET-параметр равен null, то этой строки не должно быть. То же самое, соответственно, и для строки выше
Ситуация такая, что какой-то из GET-параметров не всегда передается. И получается: $_GET['industry'] не передался, то последняя строка с AND будет выглядеть:
AND industry.term_taxonomy_id = null, и весь запрос покажет null. Мне же нужно, чтобы технически выглядело так: если не параметра, то и соответствующей строчки с AND нет. Благодарю за помощь!
P.s да, проблему можно решить при помощи тернарного выражения и конкатенации строк. Но этот вопрос задается исключительно ради ликбеза и хочется решить только SQL-запросом.
Ответы (1 шт):
Автор решения: Knyaz71
→ Ссылка
SELECT type.object_id, type.term_taxonomy_id as type_id, industry.term_taxonomy_id as industry_id
FROM wp_term_relationships type
INNER JOIN wp_term_relationships industry ON type.object_id = industry.object_id
WHERE type.object_id = industry.object_id
AND IF($_GET['type'] IS NOT NULL, type.term_taxonomy_id = $_GET['type'], 1)
AND IF($_GET['industry'] IS NOT NULL, industry.term_taxonomy_id = $_GET['industry'], 1)