我的数据库中有两个表。一个表用于一种项目,第二个表用于另一种项目(有些列相同,有些不同,第一个表包含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()){
...
}}
你必须在查询中使用联合查看一下
SELECT *
FROM (SELECT * FROM table1 WHERE "condition" UNION ALL SELECT * FROM table2 )
ORDER BY timestamp DESC;
select * from (
SELECT * FROM table1
UNION ALL
SELECT * FROM table2) raw
ORDER BY timestamp DESC
您应该定义相同的列名和顺序,使它们可以联合。