сортировать строки по полям из двух разных таблиц

У меня есть две таблицы следующим образом:

Таблица 1 (t1)

______________________________________________________________________________________________
RequestId | Raised_By | CommentDate | Comment | AttachmentName | Attachment | AttachmentSize |
----------+-----------+-------------+---------+----------------+------------+----------------+

Таблица 2 (т2)

______________________________________________
RequestId | CommentDate | Comment | Raised_By |
----------+-------------+---------+-----------+

Замечания: CommentDate это timestamp

Я хочу выбрать только одну запись, т.е. комментарий из таблицы t1 или же t2, чья RequestId=RequestId и CommentDate это последний.

Мой запрос выглядит следующим образом:

(SELECT Comment from t1 WHERE RequestId = "."\"".$_POST['RequestId']."\" and Raised_By="."\"".$_POST['Raised_By']."\" and CommentDate="."\"".$_POST['CommentDate']."\")
UNION
(SELECT Comment from t2 WHERE RequestId = "."\"".$_POST['RequestId']."\" and Raised_By="."\"".$_POST['Raised_By']."\" )
ORDER BY CommentDate DESC
LIMIT 1

Но я получаю сообщение об ошибке unknown column CommentDate,

0

Решение

Ты можешь ORDER BY если вы не выбрали это?
Нам нужно понять последовательность, в которой выполняется запрос. Если вы не выберете поле 'CommentDate' Вы не можете организовать в порядке.

Попробуйте выбрать 'CommentDate' вместе с 'Comment' и проверить

(SELECT Comment, CommentDate from t1 WHERE RequestId = "."\"".$_POST['RequestId']."\" and Raised_By="."\"".$_POST['Raised_By']."\" and CommentDate="."\"".$_POST['CommentDate']."\")
UNION
(SELECT Comment, CommentDate from t2 WHERE RequestId = "."\"".$_POST['RequestId']."\" and Raised_By="."\"".$_POST['Raised_By']."\" )
ORDER BY CommentDate DESC
LIMIT 1
1

Другие решения

Зачем использовать UNION когда ты можешь JOIN обе таблицы?

SELECT t1.Comment,
CASE WHEN t1.CommetDate > t2.CommentDate
THEN t1.commentDate
ELSE t2.commentDate
END AS commentDate
FROM t1 INNER JOIN t2 ON t1.RequestId = t2.RequestId
ORDER BY commentDate DESC
LIMIT 1
0

По вопросам рекламы [email protected]