2016-02-19 6 views
0

Я пытаюсь запустить оператор IF в моем SQL:SQL рядный IF заявление для отображения имен столбцов и строк

IF(customer = 'Y', contact_name + '(' + contact_email + ')', 'Internal') 

оператор работает с его истинным и ложным, но я хочу, чтобы иметь возможность отображать

contact_name (столбец таблицы)

, а затем в скобках рядом с этим, он будет отображать contact_email, который также является столбец таблицы.

У меня возникли проблемы с кронштейнами около contact_email.

мой полный запрос:

SELECT datetime as datetime, notes as notes 
FROM customer_communication 
WHERE company = '276' 
UNION ALL 
SELECT datetime as datetime, 
     CONCAT('Ticket #', + ticketnumber, + 
       '() Opened By ', + 
       IF(customer = 'Y', contact_name '(' contact_email ')', 
           'Internal')) as notes 
FROM tickets 
WHERE company = '276' 

и я вижу эту ошибку:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''(' contact_email ')', 'Internal')) as notes FROM tickets WHERE company = '276' ' at line 1

+2

Какую базу данных вы используете? Какую ошибку вы получаете? – David

+2

Возможно, вы хотите использовать выражение CASE. IF обычно управляет потоком в большинстве СУБД. –

+0

Просим пометить базу данных, которую вы используете, показать полный оператор, который вы пытаетесь запустить, и включить любые точные сообщения об ошибках, которые вы получаете. http://stackoverflow.com/help/how-to-ask –

ответ

1

Это должно работать:

SELECT datetime as datetime, notes as notes 
FROM customer_communication 
WHERE company = '276' 

UNION ALL 

SELECT datetime as datetime, 
     CONCAT('Ticket #', 
       ticketnumber, 
       '() Opened By ', 
       IF(customer = 'Y', contact_name + '(' + contact_email + ')' 
           , 'Internal')) as notes 
FROM tickets 
WHERE company = '276' 
Смежные вопросы