2011-01-24 12 views
4

に参加私は上の参加を希望する2つのテーブルを持って、テーブルAとテーブルBを言うことができます。テーブルbにはテーブルaに多くの行があり、テーブルbには価格が含まれています(事実上買い物カゴ)。だから私が欲しいのは、テーブルaのすべてのレコードとテーブルbの価格の合計です。私は私が望むようにしかし、これは明らかにしません、それはすべてのach_sell(その1つのレコードが返される)の総和で終わり合計がSQL

select a.*, sum(b.ach_sell) from bookings a 
left join pricing_line b on b.bookings = a.id 

を試してみました。誰かが私に助けになる解決策を親切に提供するだろうか?今私はそれをプログラム的にやっているし、それがSQLでできると確信していますか?

+0

それが労働組合を行うことが実用的ですか? –

答えて

10

あなたの方向が右である、ちょうどa.id年代を分離するためにgroup by句を追加し、このような何か:

select a.id, sum(b.ach_sell) 
from bookings a 
    left join pricing_line b 
on b.bookings = a.id 
group by a.id 
+0

完璧なおかげで! – Zoborg

0

あなただけの単一の結果をしたくない場合は、GROUP BY何かする必要があります。おそらく?

select a.*, 
     sum(b.ach_sell) as ach_sell 
from bookings a 
left join pricing_line b on b.bookings = a.id 
GROUP BY a.id 

他のRDBMSはGROUP BYにあなたが全体の列リストを持つことを主張だろうが、MySQLはしません。

0
select a.*, sum(b.ach_sell) as sum_column 
from bookings a 
    left join pricing_line b 
     on b.bookings = a.id 
group by a.id 

あなたは集計関数を適用しないでフィールドの他のいくつかのセット(tipically ID)によってグループに必要あなたが集約(SUMCOUNTMINMAXAVG)のfuncionsを使用するたび。

2

予約テーブルのフィールドのグループ:

select a.this, a.that, sum(b.ach_sell) 
from bookings a 
left join pricing_line b on b.bookings = a.id 
group by a.this, a.that 
+0

簡単なアドレッシングのために "sum(b.ach_sell)as summed_column"を追加します。 – MeanEYE

0

の場合選択項目には多くの列があります。このよう

SELECT 
    co.checkOutOrderID, 
    com.companyCode, 
    sd.serviceDispatchCode, 
    cu.customerName, 
    com.companySimp, 
    ISNULL(SUM (sdlp.partsModelPrice * sdlp.partsModelNum), 0) AS total 
FROM 
    checkoutorder co 
LEFT JOIN 
    servicedispatchorder sd ON sd.serviceDispatchID = co.serviceDispatchID 
LEFT JOIN 
    customer cu ON cu.customerID = co.customerID 
LEFT JOIN 
    company com ON com.companyID = co.companyID 
LEFT JOIN 
    servicedispatchlinkparts sdlp ON sdlp.serviceDispatchID = sd.serviceDispatchID 
GROUP BY 
    sd.serviceDispatchID, co.checkOutOrderID, 
    com.companyCode, sd.serviceDispatchCode, 
    cu.customerName, com.companySimp