У меня есть две таблицы следующим образом:
Таблица 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
,
Ты можешь 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
Зачем использовать 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