从具有相同名称的多行中获取结果

时间:2011-11-03 13:14:47

标签: php html mysql

我有一些包含各种内容的表格。我想要完成的是在div中显示这些表中的20个最新条目。

这是我的第一张表 - audio1

userID folder title date

另外两个文件夹看起来完全一样

音频2

userID folder title date

音频3

userID folder title date

如何同时从所有表中获取数据并将它们逐个回显到按日期用PHP排序的div?

4 个答案:

答案 0 :(得分:3)

SELECT userID, folder, title, date
    FROM audio1
UNION ALL
SELECT userID, folder, title, date
    FROM audio2
UNION ALL
SELECT userID, folder, title, date
    FROM audio3
ORDER BY date DESC LIMIT 20;

答案 1 :(得分:2)

您的SQL查询将是3部分UNION。当不需要UNION关系时,JOIN查询将多个表的结果与(通常)类似的结构连接在一起,而只需要从多个表中返回行。

$sql = "SELECT userID, folder, title, date FROM audio1
  UNION ALL
  SELECT userID, folder, title, date FROM audio2
  UNION ALL
  SELECT userID, folder, title, date FROM audio3
  LIMIT 20;";

$result = mysql_query($sql);
if ($result) {
  // Fetch results and echo them into a list.
}

您需要一列ORDER BY。这可能是date,但您可能有其他计划。在ORDER BY之前添加LIMIT 20子句。

答案 2 :(得分:1)

您的数据库设置似乎是错误的,您必须只有一个名为“audio”的表,其中一个字段代表您当前在表名中使用的数字。

答案 3 :(得分:0)

您可以尝试联盟,也可以尝试加入。

SELECT 
  COALESCE(t1.userID, t2.userID, t3.userID) as userID 
           , t1.folder, t1.title, t1.date
           , t2.folder, t2.title, t2.date  
           , t3.folder, t3.title, t3.date  
FROM table1 t1
FULL OUTER JOIN table2 t2 ON (t1.userID = t2.userID)
FULL OUTER JOIN table3 t3 ON (t1.userID = t3.userID)  

这是一个非常不同的野兽,所以我想我会给你一个选择。