Как я могу добавить столбец к этому результату объединения?

У меня есть этот запрос (из которого я удалил некоторые ключи для пользы краткости):

SELECT id as in_id, out_id, recipient, sender, read_flag 
  FROM received WHERE recipient=1
UNION ALL 
SELECT in_id, id AS out_id, recipient, sender, read_flag  
  FROM sent WHERE sender=1 

Который комбинирует результаты двух таблиц, показывающих сообщения, отправленные и полученные данным пользователем. То, что я хотел бы сделать, добавляет столбец/флаг к результату для различения, которые представляют строку в виде таблицы, принадлежит поэтому, когда я отображаю их, я могу показать соответствующий значок для отправленных или полученных сообщений. Как я добавил бы это?

13
задан 11 June 2010 в 16:56
поделиться

3 ответа

Просто добавьте столбец констант в каждый запрос. Неважно, какой это тип, если он одинаков в обеих частях. Таким образом, вы можете использовать 0 и 1 или две строки, например:

SELECT id as in_id, out_id, recipient, sender, read_flag , 'received' as source
  FROM received WHERE recipient=1
UNION ALL 
SELECT in_id, id AS out_id, recipient, sender, read_flag , 'sent' as source 
  FROM sent WHERE sender=1 
20
ответ дан 1 December 2019 в 21:37
поделиться

Просто добавьте столбец в каждый выбор с жестко запрограммированным значением:

SELECT id as in_id, out_id, recipient, sender, read_flag, 'received' as source_table 
  FROM received WHERE recipient=1
UNION ALL 
SELECT in_id, id AS out_id, recipient, sender, read_flag, 'sent' as source_table 
  FROM sent WHERE sender=1 
3
ответ дан 1 December 2019 в 21:37
поделиться

Это сделает:

SELECT 'r' as type, id as in_id, out_id, recipient, sender, read_flag 
  FROM received WHERE recipient=1
UNION ALL 
SELECT 's' as type, in_id, id AS out_id, recipient, sender, read_flag  
  FROM sent WHERE sender=1 
2
ответ дан 1 December 2019 в 21:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: