2013-11-04 257 views
0

我有两个表 -
表1:TypesSQl的左连接与表

ID | Type 
---+------ 
1 | type1 
2 | type2 
3 | type3 
4 | type4 
5 | type5 
6 | type6 

表2:Details

ID | Type | EventName | Cost 
---+--------+-----------+------ 
1 | type1 | name1  | 500 
2 | type1 | name2  | 500 
3 | type2 | name3  | 500 
4 | type3 | name4  | 1500 
5 | type3 | name5  | 1000 
6 | type3 | name6  | 1000 
两个表

预期结果:

Type | Number | Cost 
-------+--------+-------------- 
type1 | 2  | 1000 
type2 | 1  | 500 
type3 | 3  | 3500 
type4 | 0  | 0 
type5 | 0  | 0 
type6 | 0  | 0 

我试着用LEFT JOIN。但它并没有给我正确的数字。

+0

使用次数(eventName的),金额(成本)为AGG功能并按类型分组。 – wxyz

+0

数字字段是什么? – Damodaran

+0

数字字段是条目的计数。 –

回答

1
SELECT t.Type, count(d.Type), sum(d.cost) 
FROM Types t LEFT JOIN Details d ON t.Type=d.Type 
group by t.Type,d.Type 
+0

这给出了一个错误..... 列'd.type'在选择列表中是无效的,因为它不包含在任何一个聚合函数或GROUP BY子句 –

+0

你忘了按类型分组,非聚合列 – wxyz

+0

@SyedSohailAhmed检查我的更新代码 –

0
SELECT 
    t.Type, 
    count(t.type) as Number, 
    sum(d.cost) as Cost 
FROM 
    Types t 
    INNER JOIN Details d 
    ON t.type=d.type 
    GROUP BY t.type 
+1

计数应该超过d.type显示0条目未使用类型 – wxyz

+0

+1对于那个@wxyz –

-1

尝试SELECT * FROM (t.type),(t.EventName) 其中sum(d.cost)

+0

这是错误的。 –

+0

lolx ...如果我尝试过这个,我会感到非常沮丧。对不起@Hex ..我想你应该再看看我的问题...... –