MYSQL查询从多个表中选择,按日期排序,不同的表结构

时间:2012-01-17 10:04:17

标签: mysql sql select

我正在制作新闻源类型,我想从多个表中进行选择。我将专注于这个问题的两个表是“帖子”和“照片”。

这是我对帖子的查询:

mysql_query("
            SELECT * FROM posts 
            WHERE toID='$id' AND state='0' 
            ORDER BY id DESC LIMIT 10");

我的帖子表有以下列名:

Table: posts

id  toID   fromID   post   state     date
1    1       1      Aloha    0       1
2    1       1      Hello    0       3

我的照片表格如下:

Table: photos

id  userID  photo    state    date
1     1       2       0       2
2     1       6       0       4

预期结果:

Aloha
2
Hello
6

可能是这样的:

 SELECT * 
 (SELECT * FROM posts WHERE toID=$id AND state=0) AND
 (SELECT * FROM photos WHERE userID=$id AND state=0)
 ORDER BY date

当它从数据库中选择它们时,它应该从哪里选择toID和userID是相同的。 state应该等于0,(0表示可见),它们应按日期排序。此外,我需要创建一个新的变量传递给我的查询,所以我可以在我的PHP中确定信息来自哪个表。最后我希望按照日期对照片进行分组,所以假设用户在30分钟内上传了20张照片,他们只返回一行。我使用php time()来存储我的日期。

1 个答案:

答案 0 :(得分:2)

如果您想将所有帖子和照片放在一起,可以使用:

SELECT po.*, ph.* FROM posts po
LEFT JOIN photos ph
    ON po.toID = ph.userID
WHERE po.state = 0
  AND ph.state = 0
ORDER BY po.id DESC, ph.date DESC