我正在尝试构建一个按日期和时间排序结果的查询,但是我希望基于排序的日期和时间包含在两个表中。另外,我想通过loc_id将数据分组为具有相同日期的行。
例如,如果我有这些数据:
注意:
- parent_id链接到表A中的id
- 还有另外两个表USER和LOC用于获取用户名和位置名称。
- 注释在表A中是可选的,但在表B中始终存在。
我在这个网站上发现了很多关于我需要的信息,但没有什么能帮助我解决这个问题。
感谢。
答案 0 :(得分:3)
SELECT a.`date`
, a.`time`
, l.loc_name AS l_name
, a.rating
, a.comment
, u.user_name
FROM table_a AS a
LEFT JOIN loc AS l
ON l.loc_id = a.loc_id
LEFT JOIN `user` AS u
ON u.user_id = a.user_id
UNION ALL
SELECT b.`date`
, b.`time`
, l.loc_name AS l_name
, NULL AS rating
, b.comment
, u.user_name
FROM table_b AS b
LEFT JOIN table_a AS a
ON a.id = b.parent_id
LEFT JOIN loc AS l
ON l.loc_id = a.loc_id
LEFT JOIN `user` AS u
ON u.user_id = b.user_id
ORDER BY `date`
, l_name
, `time`
答案 1 :(得分:0)
这样的东西?
(假设您的用户表名为用户,您的位置表位置。)
SELECT a.date, a.time, l.loc_name, a.rating, b.comment, u.user_name
FROM table_a a
JOIN locations l ON l.loc_id = a.loc_id
LEFT JOIN table_b b ON b.parent_id = a.id
RIGHT JOIN users u ON a.user_id = u.user_id
GROUP BY a.loc_id
ORDER BY a.date DESC, a.time DESC