PHP / MySQL需要将两个表中的数据合并到一个对象,并按日期对它们进行排序

时间:2014-03-13 12:11:07

标签: php mysql sql sorting merge

我的数据库中有两个表。一种用于一种项目,第二种用于另一种项目(一些列相同,一些不同,第一个表包含23列,第二个包含24列)。用户可以添加这两种项目。我不知何故只需要所有这些项目并按日期(时间戳列)对它们进行排序,因此最近显示的是添加项目。项目是提供和要求(学生住宿)。

现在,我使用两个sql查询,首先是提供(按日期排序)然后是需求(按日期排序)。但是这个系统很糟糕,因为对于许多项目,用户在找到需求之前必须经历许多页面。所以我需要将它合并。

我的部分代码:

$sql = "SELECT * FROM table1 ORDER BY timestamp DESC";
if ($result = $mysqli->query($sql)) {
    while($obj = $result->fetch_object()){
    ...
}}

$sql1 = "SELECT * FROM table2 ORDER BY timestamp DESC";
if ($result = $mysqli->query($sql1)) {
    while($obj = $result->fetch_object()){
    ...
}}

2 个答案:

答案 0 :(得分:1)

你必须在查询中使用union all 看看它

SELECT  *

FROM (SELECT * FROM table1  WHERE "condition" UNION ALL SELECT * FROM table2 )

ORDER BY timestamp DESC;

答案 1 :(得分:0)

select * from (
  SELECT * FROM table1
  UNION ALL
  SELECT * FROM table2) raw
ORDER BY timestamp DESC

您应该定义相同的列名和顺序,以便将它们联合起来。