2010-03-27 106 views
5

请看看这个图片MySQL的加入3个表和统计

alt text http://img249.imageshack.us/img249/6453/pic1v.jpg

这里3个表,并出我要的是

从表1 工业流体从相同的UID 计数表3来自同一用户的表2的fid

像样本示例中的输出将是2个记录

感谢

+0

到目前为止你做了什么以及你目前的尝试有什么问题? – Yacoby 2010-03-27 14:12:53

+0

我尝试了很多sql语句,但无法让它们工作。 我尝试加入,内乔恩等 我也在互联网上搜索,但没有得到任何答案。 – air 2010-03-27 14:21:46

回答

5

我看不出有任何的表1的关系下面是使用两个表和分组由流体之间的内加入一个例子:

SELECT 
    t3.uid, 
    t3.industry, 
    count(t2.fid) 
FROM 
    table3 t3 
INNER JOIN 
    table2 t2 ON t3.uid = t2.uid 
GROUP BY 
    t3.uid 
+0

我同意这个答案,这里没有必要加入表1。你可以使用t3.uid和t2.uid来加入它们,并获得所有需要的信息。 – Faisal 2010-03-27 14:32:08

+2

虽然通常我同意答案,但额外的JOIN可能会过滤掉UID不在Table1中的行。 此外,对于显示的查询是正确的,group by还应该包含't3.insdustry' – van 2010-03-27 14:36:11

4

试试这个:

SELECT table1.uid,table3.industry,COUNT(table2.fid) 
FROM table1 
INNER JOIN table3 ON table1.uid=table3.uid 
INNER JOIN table2 ON table1.uid=table2.uid 
GROUP BY table1.uid, table3.industry 

表1内部连接是无用的,但如果您需要检索city或mem_no,则可能会有用; 在这种情况下,请记住在GROUP BY子句中也添加该字段。