MySQL не поддерживает IF
, если вы не поместите код в программный блок.Ваш вопрос немного сложен для понимания, потому что в тексте упоминается один запрос, но код из двух, которые кажутся идентичными.
Вы можете переместить условную логику в самое крайнее предложение WHERE
в вашем запросе:
SELECT u.uname AS `user`, scu.message AS user_message, scu.created AS user_chat_date,
st.`subject` AS ticket_subject, st.`status` AS ticket_state, st.created AS ticket_date, st.modified AS updated_date,
t.state
FROM tickets t JOIN
support_chat_user scu
ON scu.tickets_id = t.tick_id JOIN
support_ticket st
ON st.tickets_id = t.tick_id JOIN
usr_users u
ON scu.reporter_id = u.uid
WHERE t.tick_id = 9 AND -- presumably this is not numeric
u.uid = 1 AND -- presumably this is not numeric
EXISTS (SELECT 1 FROM tickets t2 WHERE t2.ticket_section = @strg)
Я не уверен, что это то, чего вы действительно хотите.Я подозреваю, что вы хотите:
WHERE t.tick_id = 9 AND -- presumably this is not numeric
u.uid = 1 AND -- presumably this is not numeric
(t.ticket_section = @strg OR @strg IS NULL)
Однако это просто обоснованное предположение о том, что было бы полезно в описываемой вами ситуации.
Примечания:
- Таблицапсевдонимы облегчают написание и чтение запроса (как и правильные отступы).
- Числовые константы не следует вводить в одинарных кавычках.Я предполагаю, что идентификаторы действительно числа.Если они являются строками, то одинарные кавычки являются подходящими.