2014-07-15 75 views
0

我需要合併3個求和查詢的結果並在循環中回顯結果。我被困在如何以正確的方式完成。我想使用while循環爲每個客戶端回顯一行,顯示按客戶端名稱分組的3個總和查詢的結果:使用聯合或聯接在where語句中使用多個查詢結果

客戶端名稱|總到期|現金銷售總額|信用銷售總額

結果顯示全部歸因於客戶。 noncashresult顯示所有由於信用銷售客戶。 cashresult顯示所有由於客戶從現金銷售。

$result = mysql_query("SELECT `client_name` As `Client`, SUM(`due_to_client`) As `Total Due` 
FROM `Consignment` 
WHERE `payout_approved` = 'Yes' 
GROUP BY `client_name`"); 

$noncashresult = mysql_query("SELECT `client_name` As `Client`, SUM(`due_to_client`) As `Credit Total Due` 
FROM `Consignment` 
WHERE `payout_approved` = 'Yes' AND `paymenttype` IN ('Credit') 
GROUP BY `client_name`"); 

$cashresult = mysql_query("SELECT `client_name` As `Client`, SUM(`due_to_client`) As `Cash Total Due` 
FROM `Consignment` 
WHERE `payout_approved` = 'Yes' AND `paymenttype` IN ('Cash') 
GROUP BY `client_name`"); 

while($row = mysql_fetch_array($result)) 
        { 
       echo $row['Client']; 
       echo $row['Total Due']; 
       echo $row['Credit Total Due']; 
       echo $row['Cash Total Due']; 
        } 
+0

嗨克雷格,如果是我,我會收集每個查詢的結果到客戶端組織的數組。然後,您可以在循環訪問數組時循環打印每個客戶端信息。 我錯過了什麼嗎? 或者,您可能可以在每個查詢之間使用UNION並獲得所需內容(除非UNION需要每列的別名相同,否則可能會導致您的結果難以理解/保留每個結果的含義)。 – MER

回答

3

您可以使用類似:

SELECT `client_name` As `Client`, 
SUM(`due_to_client`) As `Total Due`, 
SUM(CASE WHEN `paymenttype`='Credit' THEN `due_to_client` ELSE 0 END) As `Credit Total Due`, 
SUM(CASE WHEN `paymenttype`='Cash' THEN `due_to_client` ELSE 0 END) As `Cash Total Due` 
FROM `Consignment` 
WHERE `payout_approved` = 'Yes' 
GROUP BY `client_name` 

這將產生的結果:

Client | Total Due | Credit Total Due | Cash Total Due 

當然,儘量避免使用mysql_ *擴展,而這是在MySQL 5.5棄用。X。相反,使用mysqli或pdo擴展

+0

我試過了,但得到語法錯誤 –

+0

謝謝,有錯別字,我只是編輯它 - 現在嘗試 – user3714582

+0

這樣做。謝謝。現在我需要學習以瞭解查詢。 –

相關問題