我使用selectSellerID
功能来检索用户的ID。
public function selectSellerID($item_id)
{
if($q = $this->db->mysqli->prepare("SELECT user_id FROM items WHERE id = ?"))
{
$q->bind_param("i", $item_id);
$q->execute();
$q->bind_result($id);
$q->fetch();
$q->close();
return $id;
}
return false;
}
item_id也可以出现在另一个表中,这是一个转售表。在这种情况下,user_id将更改。下面是转售表。
+----+---------+---------+-------+------+
| id | user_id | item_id | price | date |
+----+---------+---------+-------+------+
| 2 | 18 | 27 | 91 | NULL |
| 3 | 1 | 27 | 90 | NULL |
| 4 | 1 | 27 | 75 | NULL |
+----+---------+---------+-------+------+
所以我需要更改函数以检查item_id是否在转售表中是presend,然后只获取最新的user_id,因为它可能会多次转售。除了进行第二次查询之外,更改功能的最佳方法是什么?
答案 0 :(得分:0)
您可以使用MySQL JOINS
。
将items
表与resell
表联系起来,然后对结果集排序最高id
将得到所需的结果。
尝试以下查询:
SELECT IF(r.user_id IS NULL, i.user_id, r.user_id) AS user_id
FROM items i
LEFT JOIN resell r
ON i.id = r.item_id
WHERE i.id = ?
ORDER BY r.id DESC
LIMIT 1
答案 1 :(得分:0)
使用LEFT JOIN
$q = $this->db->mysqli->prepare("SELECT rsl.user_id FROM items itms LEFT JOIN resell rsl ON itms.id = rsl.item_id WHERE itms.id = ? ORDER BY rsl.id DESC LIMIT 1");