我正在尝试显示按数据创建时间排序的两个不同表中的数据。
这是我从中提取数据的 2 个表:
active_projects
+------------+------------+---------+-------+-------------+
| project_id | ts_created | user_id | title | description |
+------------+------------+---------+-------+-------------+
喜欢
+---------+------------+------------+
| user_id | project_id | ts_created |
+---------+------------+------------+
所需的结果是从这些列中检索到的所有数据正确显示,按此列排序:
+------------+
| ts_created |
+------------+
这是我目前正在使用的查询:
$sql = "SELECT *
FROM (SELECT project_id AS ppid,
ts_created AS pts,
user_id AS puid,
title AS ptitle,
description AS pdesc
FROM active_projects
WHERE user_id = 12)
UNION
(SELECT id AS lid,
user_id AS luid,
project_id AS lpid,
ts_created AS lts
FROM likes
WHERE user_id = 12)";
但是,它没有按照我想要的方式工作。我一直在尝试调试正在发生的事情,但现在它只是说它实际上并没有检索任何数据。
我一直在研究 JOIN 和 UNION 但不确定我应该使用哪一个来进行此查询。非常感谢任何帮助。
编辑:查询现在使用@Samuel 的答案正确显示。但是,现在结果每行显示 3 次。我在查询结束时这样做:
$act = mysql_query($sql);
然后,当我回显结果时,我正在使用这样的 while 循环:
while ($t = mysql_fetch_row($act)) {
echo $t[1];
}
关于为什么每行显示 3 次的任何想法?