[英]MySQL RIGHT JOIN nested subquery
我有以下查询,并在我的子查询“ c”上有正确的联接
$sqlbsc="SELECT customers.LastName, Sum(IFNULL(scripts.PharmAmount,0)) AS SumPharm, customers.ChemistID, customers.FullName
FROM
(SELECT scripts.WrittenOff, scripts.PharmAmount, scripts.ChemistID, scripts.ReconcilID, claims.CustomerID FROM scripts
INNER JOIN
claims ON scripts.ClaimID = claims.ClaimID
WHERE
(((scripts.WrittenOff)=False) AND ((scripts.ChemistID)='".$_SESSION['chsh']."') AND ((scripts.ReconcilID) IS NULL))) c
RIGHT JOIN customers ON c.CustomerID = customers.CustomerID
GROUP BY customers.LastName, customers.ChemistID, customers.FullName
HAVING ((customers.ChemistID)='".$_SESSION['chsh']."')
ORDER BY customers.LastName";
最后就是
Customers.FirstName, Customers.LastName and Sum(Scripts.pharmamount) where Scripts.reconcilID IS NULL
但是我希望所有我的客户都从我的客户表中出现,并且只显示为sum = $0.00
我在Access女士中将ti作为子查询工作,但是上面没有任何帮助。
我的结果对我的子查询SQL是正确的。 当我使用它时,它有效,但是我的主要查询不起作用。
谁能提供一些见识?
修复!!! 2小时..然后发布在这里,我在1分钟内修复自己,大声笑我需要将scripts.pharmamount更改为c.pharmamount,因为它是指子查询而不是实际的表!
最终查询非常相似:
$sqlbsc="SELECT customers.LastName, Sum(IFNULL(c.PharmAmount,0)) AS SumPharm, customers.ChemistID, customers.FullName
FROM
(SELECT scripts.WrittenOff, scripts.PharmAmount, scripts.ChemistID, scripts.ReconcilID, claims.CustomerID FROM scripts
INNER JOIN
claims ON scripts.ClaimID = claims.ClaimID
WHERE
(((scripts.WrittenOff)=False) AND ((scripts.ChemistID)='".$_SESSION['chsh']."') AND ((scripts.ReconcilID) IS NULL))) c
RIGHT JOIN customers ON c.CustomerID = customers.CustomerID
GROUP BY customers.LastName, customers.ChemistID, customers.FullName
HAVING ((customers.ChemistID)='".$_SESSION['chsh']."')
ORDER BY customers.LastName";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.