2015-01-07 37 views
1

我在計算一個客戶的總帳單時遇到問題。我有三個名爲「測試」,「藥房」,「檢查」的表格。嵌套Sum()查詢在mysql中不起作用

列在test是:

patient_ID 
testname 
rate 

列在pharmacy是:

patient_ID 
medicineDescription 
qty 
rate 

列在check是:

patient_ID 
doctorID 
fees 
date 

我有一個表Bill將存儲總量的病人。

patient_ID 
amount 
date 

我已經使用了下面的查詢。但它給出了以下錯誤。

$result = mysqli_query($data, "SELECT patient_ID, (SUM(pharmacy.qty*pharmacy.rate) + SUM(test.rate) + SUM(check.fees)) 
    AS total FROM pharmacy, test, check WHERE patient_ID= '$pID'"); 
+0

你有一個錯字,3x'(',但只有2個'''''。 – panther

回答

0

正確的查詢應,閉架失蹤的子查詢結束(... AS total FROM pharmacy**)**):

$result = mysqli_query ($data, "SELECT patient_ID, 
             (SUM(pharmacy.qty*pharmacy.rate) + SUM(test.rate) + SUM(check.fees)) AS total FROM pharmacy), 
             test, 
             check 
           WHERE patient_ID= '$pID'"); 
0

您的from條款三個表,但沒有加入的條件 - 這意味着你將每一行與所有其他行進行配對,這顯然不是你想要的。處理這種情況的一種方法是使用適當的join s:

SELECT p.patient_id, pharmacy_sum + test_sum + fees_sum AS total 
FROM (SELECT patient_id, SUM(qty * rate) AS pharmacy_sum 
     FROM  pharmacy 
     WHERE patient_ID= '$pID' 
     GROUP BY patient_id) p 
JOIN (SELECT patient_id, SUM(rate) AS test_sum 
     FROM  test 
     WHERE patient_ID= '$pID' 
     GROUP BY patient_id) t ON p.patient_id_id = t.patient_id 
JOIN (SELECT patient_id, SUM(fees) AS fees_sum 
     FROM  check 
     WHERE patient_ID= '$pID' 
     GROUP BY patient_id) c ON p.patient_id_id = c.patient_id