MYSQL查询,按两个表中包含的时间戳排序数据

时间:2011-07-17 19:36:14

标签: mysql

我正在尝试构建一个按日期和时间排序结果的查询,但是我希望基于排序的日期和时间包含在两个表中。另外,我想通过loc_id将数据分组为具有相同日期的行。

例如,如果我有这些数据:

enter image description here

注意:
- parent_id链接到表A中的id - 还有另外两个表USER和LOC用于获取用户名和位置名称。
- 注释在表A中是可选的,但在表B中始终存在。

我在这个网站上发现了很多关于我需要的信息,但没有什么能帮助我解决这个问题。

感谢。

2 个答案:

答案 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