2011-03-15 36 views
0

請幫助:Php Mysql幫助。結合2個MySQL表,並提供報告

我有2個表。例子:

  1. 客戶(包括ID,姓名,電子郵件等)
  2. 訂單(包含訂單ID,OWNERID(= Customers.id),paymentstatus等)

我想運行一個該查詢可顯示客戶表中的所有客戶名稱,並顯示該客戶使用訂單表的總數,未付款和已付款訂單數。

例子:

---------------------------- 
| Customer | Paid | Unpaid | TotalOrders 
---------------------------- 
| cus_a | 2000 | 5000 | 7000 
| cus_b | 1680 | 4880 | xxxx 
| cus_b | 5780 | 3720 | xxxx 
---------------------------- 

您的幫助將不勝感激請。

回答

0
select 
    c.name, 
    ifnull(sum(case when paymentstatus = 'Paid' then amount end), 0) Paid, 
    ifnull(sum(case when paymentstatus != 'Paid' then amount end), 0) Unpaid, 
    ifnull(sum(o.amount),0) as TotalOrders 
from customer c 
left join orders o on o.ownerid=c.id 
group by c.id, c.name 

如果你沒有,你正在總結的量柱,只是使用COUNT代替

select 
    c.name, 
    count(case when paymentstatus = 'Paid' then amount end) Paid, 
    count(case when paymentstatus != 'Paid' then amount end) Unpaid, 
    count(o.ownerid) as TotalOrders 
from customer c 
left join orders o on o.ownerid=c.id 
group by c.id, c.name 
+0

非常感謝您的幫助我,但當我在第一個答案中運行查詢時,我得到了「未知列支付在fieldlist中」,當我在第二個答案中運行查詢時,我得到「欄目列表中的未知列數量」。我有一列PAYMENTSTATUS,其中包含支付和未支付的條目。我沒有任何名稱爲Paid或Unpaid的專欄。另外我沒有總金額。我只想統計總訂單(PATMENTSTATUS字段中的總記錄),未付訂單(PATTERNTATUS字段中)和付款訂單(PATTERNTATUS字段中)。再次感謝您的幫助.. – 2011-03-16 01:04:07

+0

@Haider答案更新 – RichardTheKiwi 2011-03-16 01:09:09

+0

謝謝理查德。你的代碼完全幫助了我。我只是修改了一下,它按我的預期工作了100%。下面是修改後的代碼: 選擇 c.name, 計數(情況下,當paymentstatus = '付費' 然後paymentstatus端)tPaid, 計數(當paymentstatus = '付費' 然後paymentstatus端情況下!)tUnpaid, 計數(鄰.ownerid)作爲TotalOrders from imgup_users c 左加入訂單o on.ownerid = c.id group by c.id,c.name 我非常感謝你和所有試圖幫助我的人。對此,我真的非常感激。你和計算器都很棒!再次感謝! – 2011-03-16 11:13:35

0

嘗試使用左外連接。

SELECT 
    c.*, 
    count(o.paid) as paid, 
    count(o.unpaid) as unpaid 
FROM 
    customers c 
    LEFT OUTER JOIN Order 
     ON c.id = o.ownerid 
+0

非常感謝你試圖幫助我,可當我運行查詢在第一個答案中,我得到了「在字段列表中支付的未知列」,當我在第二個答案中運行查詢時,我得到「列表中的未知列數」。我有一列PAYMENTSTATUS,其中包含支付和未支付的條目。我沒有任何名稱爲Paid或Unpaid的專欄。另外我沒有總金額。我只想統計總訂單(PATMENTSTATUS字段中的總記錄),未付訂單(PATTERNTATUS字段中)和付款訂單(PATTERNTATUS字段中)。再次感謝您的幫助... – 2011-03-16 01:00:12