2016-08-15 8 views
0

私は右と下のクエリは、「C」私subequeryに参加していMySQLはRIGHT JOINを入れ子になったサブクエリ

これは

Customers.FirstName, Customers.LastName and Sum(Scripts.pharmamount) where Scripts.reconcilID IS NULL 

で終わることです

$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"; 

しかし、私はすべての顧客にしたいです私の顧客のテーブルから表示され、ちょうどのように表示されますsum = $0.00

私はサブクエリとしてMs Accessで働いていますが、上記は私に何も与えません。

私のサブクエリSQLの結果は正しいです。私はこれを使用すると動作しますが、メインクエリは機能しません。

誰でも洞察力を与えることはできますか?

答えて

1

固定! 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"; 
関連する問題