如何在我的网站上显示mySQL数据库(多个表)的最新内容?

时间:2013-08-17 20:51:20

标签: sql union

我刚刚开设了一个网站,用于显示图片和视频。在我的FrontPage上,我想要显示最新的视频/图片。我每天上传一张图片或视频,因此所有图片和视频在我的数据库中都有不同的日期。 我有两个表:“图片”和“视频”具有相同的结构。 我用来从我的数据库中获取数据的代码如下所示:

前两个代码是在列表中显示我的图片或视频的代码。

$GET_picture = mysql_query("SELECT * FROM Pictures ORDER BY Dato DESC LIMIT 0,1");
while($picture = mysql_fetch_array($GET_picture))

$GET_video = mysql_query("SELECT * FROM Videos ORDER BY Dato DESC LIMIT 0,1");
while($video = mysql_fetch_array($GET_film)){

接下来的两个代码用于显示特定的图片或视频:

$GET_spec_picture = mysql_query("SELECT * FROM Pictures WHERE id='$id'");
$spec = mysql_fetch_array($GET_spec_picture);

$GET_spec_video = mysql_query("SELECT * FROM Videos WHERE id='$id'");
$spec = mysql_fetch_array($GET_spec_video);

同样,我想要做的是在FrontPage上显示最新的(也是最新的)图片或视频。 我尝试过使用UNION标签,但它没有用。任何人都可以告诉我如何在这种情况下正确使用标签,还是我有其他问题?

提前谢谢!

2 个答案:

答案 0 :(得分:0)

你试过这个吗?

(SELECT * FROM Pictures ORDER BY Dato DESC LIMIT 0,1)
union all
(SELECT * FROM Videos ORDER BY Dato DESC LIMIT 0,1)
order by Date desc
LIMIT 0, 1;

严格来说,每个子查询中的order by是不必要的。但是,如果您在date上有索引,这些索引将很快获得最新版本,并且两行的最终排序很简单。

答案 1 :(得分:0)

如果你的PHP真的是

if($_GET['mode'] == ""){ 
  $get_content = mysql_fetch_array("
     (SELECT * FROM Pictures
       ORDER BY Dato DESC LIMIT 0,1) 
     union all (SELECT * FROM Videos 
       ORDER BY Dato DESC LIMIT 0,1)
     order by Dato DESC LIMIT 0, 1");
   while($content = mysql_fetch_array($get_content)){...}
}

然后您应该将第一个mysql_fetch_array替换为mysql_query