如果您转到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。
问题请发表评论,请用不那么难的英语回答,你可能会听到,我自己不是英语 谢谢
我的问题是:怎么做?
答案 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)。
然后,您可以在单个查询中执行所需操作。如果您提供有关数据库架构的更多信息,则可以为您构建确切的查询。