Как добавить столбец в этот результат объединения?
У меня есть этот запрос (который я удалил из нескольких ключей для краткости):
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
который объединяет результаты из двух таблиц, показывающих сообщения, отправленные и полученные данным пользователем. То, что я хотел бы сделать, это добавить столбец/флаг в результат, чтобы отличить таблицу, к которой принадлежит строка, поэтому, когда я их показываю, я могу показать соответствующий значок для отправленных или полученных сообщений. Как бы добавить это?
Ответы
Ответ 1
Просто добавьте константу в каждый запрос. Неважно, какой тип такой, какой он есть в обеих частях. Таким образом, вы можете использовать 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
Ответ 2
Просто добавьте столбец в каждом элементе с жестким кодированным значением:
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
Это будет сделано:
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