0
我想要做連接表points_minus
並且做一些類似(SUM(p.points) - SUM(m.points)) AS points
而不是這樣做的return $points - $this->getMUserPoints($user_id);
,這有點兒imo。如果不使用子查詢就可以完成。MySQL - 從兩個不同的表中減去總和
/**
* Get plus user points.
*
* @param (int) $user_id
*/
public function getUserPoints($user_id) {
if($q = $this->db->mysqli->prepare("SELECT SUM(points) FROM points_plus WHERE user_id = ?"))
{
$q->bind_param("i", $user_id);
$q->execute();
$q->bind_result($points);
$q->fetch();
$q->close();
return $points - $this->getMUserPoints($user_id);
}
return false;
}
/**
* Get minus user points.
*
* @param (int) $user_id
*/
public function getMUserPoints($user_id) {
if($q = $this->db->mysqli->prepare("SELECT SUM(points) FROM points_minus WHERE user_id = ?"))
{
$q->bind_param("i", $user_id);
$q->execute();
$q->bind_result($points);
$q->fetch();
$q->close();
return $points;
}
return false;
}
遠遠得到這個...但它返回一個負數:
"SELECT (SUM(p.points) - SUM(m.points))
FROM points_plus p
LEFT JOIN
points_minus m
ON p.user_id = m.user_id
WHERE p.user_id = ?
GROUP BY p.user_id"))
第二個工作......但不是那兩個子查詢? – Ciprian
@ciprian,是的,它是子查詢,但它不是相關的子查詢。你必須使用子查詢。你不能這樣做,因爲你會得到meanengless的結果。 –
好的。非常感謝您的幫助。但是就你的知識而言......這比我之前所做的更好嗎?這兩種方法。 .. – Ciprian