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