Как использовать оператор 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)
→ Ссылка