因此,我有两个表,它显示的值类似于Facebook look-a feed。它们都有一个datetime
列,名为date
,但我希望它们按日期desc排序。
我认为加入是正确的方式(?),但不太确定。有人能帮帮我吗?
目前我在两个不同的查询中有它们:
$status1 = "1";
$stmt1 = $link->prepare('
SELECT id
, ident_1
, ident_2
, date
, ident_1_points
, ident_2_points
FROM duel
WHERE active=?
ORDER
BY date
');
$stmt1-> bind_param('s', $status1);
而且
$status2 = "OK";
$stmt2 = $link->prepare('SELECT id, ident, pp, date FROM sales WHERE status=? AND team IN (2, 3) ORDER BY date DESC LIMIT 20');
$stmt2->bind_param('s', $status2);
我该怎么做呢?
如果您想要一个包含两个表中数据的连续列表,并且整个列表按日期排序,那么您可能需要在子查询中使用联合查询,然后对外部查询进行排序,如下所示:
SELECT *
FROM
(
SELECT id, ident_1, ident_2, date, ident_1_points, ident_2_points
FROM duel
WHERE active=?
UNION ALL
SELECT id, ident, pp, date, NULL, NULL
FROM sales
WHERE status=?
AND team IN (2, 3)
LIMIT 20
) list
ORDER BY date DESC
老实说,从您的描述来看,需求并不是100%清楚(在询问SQL问题时,示例数据和预期结果总是很有帮助),但我认为这非常接近您所需要的。
join
似乎并不合适,除非您想要一个结果集,其中每个表中的项通过某个公共字段相互链接,并将它们组合在一起,这样就可以得到并列的所有列,显示一个表中的数据,旁边是与另一个表中的数据相匹配的数据。
如果您不确定,我建议查看说明JOIN和UNION的教程/示例/文档。