【发布时间】:2014-03-13 15:32:02
【问题描述】:
我有这两张桌子
cmets
| ID | COMMENT | FULLNAME | PHOTO_ID | CREATED_AT |
|----|---------|----------------|----------|---------------------------------|
| 76 | comment1| John Smith | 14 | February, 25 2014 10:38:02+0000 |
| 77 | comment2| James Anderson | 14 | February, 25 2014 10:38:14+0000 |
| 78 | comment3| Will Smith | 15 | March, 11 2014 14:24:08+0000 |
观看次数
| ID | USER | PID | CREATED_AT |
|----|------------|---------------------------------|
| 63 | user1| 15 | February, 25 2014 11:12:03+0000 |
| 64 | user1| 14 | February, 25 2014 11:14:10+0000 |
| 66 | user2| 15 | February, 25 2014 11:15:16+0000 |
| 68 | user2| 14 | February, 25 2014 10:38:12+0000 |
我想从comments.comment、comments.fullname、views.user 中获取值,因此我可以将它们用于 foreach,结果将按日期排序,如下所示:
John Smith added a comment February, 25 2014 10:38:12 //comment1
user2 viewed the file February, 25 2014 10:38:12 //view
James Anderson added a comment February, 25 2014 10:38:12 //comment2
我正在使用 UNION 使用此查询,但我认为这不是正确的方法,因为我无法使用全名来判断谁在写评论或查看文件的用户
SELECT comment, fullname, comments.created_at
FROM comments
WHERE comments.photo_id = 14
UNION
SELECT user, '', views.created_at
FROM views
WHERE views.pid = 14
ORDER BY created_at DESC
结果是
| COMMENT | FULLNAME | CREATED_AT |
|----------|----------------|---------------------------------|
| user1 | | February, 25 2014 11:14:10+0000 |
| comment2 | James Anderson | February, 25 2014 10:38:14+0000 |
| user2 | | February, 25 2014 10:38:12+0000 |
| comment1 | John Smith | February, 25 2014 10:38:02+0000 |
那么,有没有另一种方法来组合这两个表,按日期排序并单独获取行? 这是sqlfiddle。
【问题讨论】:
-
这两张表是什么关系?
-
它们之间没有关系。