MySQL连接3个表并计数。

5
请查看以下图片:

alt text

这里有三个表格,我想要的是:
从表格1中获取uid 从表格3中获取与该uid相同的industry 从表格2中获取与该uid相同的fid数量
就像示例中的输出一样,将会有两条记录。
谢谢。

你目前做了什么,你当前尝试的问题是什么? - Yacoby
我尝试了很多SQL语句,但无法使它们正常工作。 我尝试了连接(join),内连接(inner join)等等。 我还在互联网上搜索,但没有找到任何答案。 - air
2个回答

5

我没有看到表1的任何关联。以下是使用两个表之间的内部连接并按uid分组的示例:

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

我同意这个答案,这里没有必要加入表1。你可以使用t3.uid和t2.uid将它们连接起来,并获取所有所需信息。 - Faisal
2
尽管我一般同意这个答案,但是额外的JOIN可能会过滤掉UID不在Table1中的行。 此外,为了使显示的查询正确,group by应该包含t3.insdustry - van

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

Table1 inner join是无用的,但如果您需要检索城市或mem_no,则可能会有用;在这种情况下,请记得在GROUP BY子句中也添加该字段。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接