PHP的最新动作?

时间:2010-02-28 21:46:58

标签: php sql join

如果您转到http://www.foxnews.com,向下滚动一下,您会看到“最新消息”框。

现在我想做类似的事情,但需要修改。

我有3个查询,从3个表中获取信息。但这并没有给我“最新消息”,因为它是3个单独的查询。

现在我想创建一个框,(我可以在css中执行此操作),它显示这3个表的最新列, 按dato DESC排序。

这些是表格:

表名: Member_meetups

要显示的列:meetup

表: member_film

要显示的列:navn

表: member_tutorials

要显示的列:标题

按dato排序.. 所有这些表都有“dato”列,所以我想从dato DESC中进行整理..

这样就是这三张桌子的最新动作..

例如,它会显示如下:
最新行动:
我喜欢Meetups - 23:11:02 - 01/01/01(member_meetups中的专栏)
我喜欢教程 - 23:10:00 - 01/01/01(member_tutorials中的专栏)
我首先喜欢教程 - 01/01/01 01:59:00(member_tutorials中的专栏)
我讨厌电影! - 01/01/01 01/01/01(member_film中的一列)

等等..如您所见,按DATO排序,会在3个表格中显示最后一列的标题+ dato。

问题请发表评论,请用不那么难的英语回答,你可能会听到,我自己不是英语 谢谢

我的问题是:怎么做?

2 个答案:

答案 0 :(得分:1)

您想使用UNION。这是一个示例查询:

SELECT meetup AS text, dato FROM Member_meetups UNION
SELECT navn AS text, dato FROM member_film UNION
SELECT title AS text, dato FROM member_tutorials
ORDER BY dato DESC
LIMIT 10;

我只选择了您指定的列;如果您需要从每个表中获得更多列,则根据需要更改查询。只需确保根据需要使用AS函数排列列名称以规范化数据。

你应该考虑缓存这些数据;这通常是一个非常缓慢的查询。

编辑以在评论中回答问题:

我并不完全清楚你希望它如何工作,如果没有你的数据库架构,很难编写一个完整的查询,但这里有一个要点:

SELECT m.meetup AS text, m.dato FROM Member_meetups m
INNER JOIN member_battles b
ON m.battle=b.id
WHERE b.fighter1=$pUsername OR b.fighter2=$pUsername UNION
SELECT navn AS text, dato FROM member_film UNION
SELECT title AS text, dato FROM member_tutorials
ORDER BY dato DESC
LIMIT 10;

同样,这非常粗糙,因为我不知道您的数据库架构,或者非常了解您希望查询执行的操作。如果您需要更具体的帮助,我建议您编辑问题或开始新问题。通过评论来处理这些类型的事情非常困难。

答案 1 :(得分:0)

你实际上并没有问我能收集什么问题。

但我会尽力回答你的问题


你应该使用mySQL join。 (我假设你使用的是mySQL)。

然后,您可以在单个查询中执行所需操作。如果您提供有关数据库架构的更多信息,则可以为您构建确切的查询。