【发布时间】:2023-03-05 06:21:01
【问题描述】:
假设我有这样一张桌子:
表swipes
swp_id swp_by swp_to swp_type swp_date
1 8 1 top 2020-03-24 02:39:12
2 11 1 right 2020-03-18 02:37:58
3 1 8 right 2020-03-31 04:04:40
4 1 11 top 2020-03-31 04:04:40
基于我的设置如下:
<?php
$stmt = $pdo->prepare("SELECT * FROM swipes WHERE swp_by = :mem AND swp_type != 'left' ORDER BY swp_id DESC");
$stmt-> bindValue(':mem', $sessionUser);
$stmt-> execute();
while($swp = $stmt->fetch()){
$match = $pdo->prepare("SELECT swp_id, swp_date FROM swipes WHERE swp_by = :by AND swp_to = :to AND swp_type != 'left'");
$match-> bindValue(':by', $swp['swp_by']);
$match-> bindValue(':to', $sessionUser);
$match-> execute();
while($mat = $match->fetch()){
?>
<!-- Some HTML Part here to display fetched data as per second while loop -->
<?php } } ?>
正如您现在所看到的,我在第一个查询中有ORDER BY swp_id DESC,它工作正常。但是当我尝试从第一个查询中删除并在第二个查询中添加它时它不起作用。我真正想做的是从最近的滑动中获取时间。
正如您在上面给出的表格中看到的,对于带有swp_id 1 和 2 的第一两行,用户 8 和 11 首先刷了用户 1。后来,用户 1 刷了用户 8 和 11,正如您在 swp_id 3 和 4 的记录中看到的那样。现在,记录 3 和 4 是最新记录。因此,我想从这些记录而不是从 1 和 2 中获取 swp_date。现在,它正在从记录 1 和 2 中返回日期。
【问题讨论】:
-
如果您向我们展示这两个相关表格中的数据,可能有助于我们了解您的情况
-
@RiggsFolly 此处的其他表格不是强制性的。我会更新问题。
-
@RiggsFolly 我已经更新了这个问题。仅涉及 1 个表。我之前没有费心去清理它。但是这些表对这个问题并不重要。
-
我认为您混淆了
swipe_by和swipe_to值。ORDER仅对您检索的数据进行排序,与您选择的内容无关。 -
@Michel 不,这些值没问题。简而言之,我在这里真正想要的是从记录 3 和 4 而不是 1 和 2 中获取
swp_date值,因为记录 3 和 4 是 1 和 2 的匹配记录并出现在第二位。