我有 3 张 table :
1 TableTraders
trader_id|Domain|
---------------------
1|google.com
2|yahoo.com
2 个表 Counter_in
counter_time counter_ip counter_domain_id
111111 222222 1
111111 222224 2
111111 222225 3
111111 222232 2
111111 222221 3
111111 222223 4
1111311 22223422 5
3 Table Out Counter
counter_time counter_ip counter_domain_id
111111 222222 1
111111 222222 2
111111 222222 3
111111 222226 2
111111 222221 3
111111 222222 4
1309351485 2130708581 5
1309351485 2130708581 4
1309710116 2130706433 4
1309351485 2130708581 1
1309710274 2130706433 1
好吧,我想要做的是将表 1 、 2 、 3 连接起来,并将它们分组在一起,然后对它们进行计数。
trader_id|DOMAIN|IN|OUT
--------------------------
1|google.com|3|1
2|yahoo.com|1|2
我尝试了很多方法,但总是得到错误的结果。我如何正确加入查询以获得我想要的结果
*编辑
尝试的查询:
SELECT traders.trader_id, traders.domain, COUNT( counter_in.counter_domain_id ) AS today_in, COUNT( counter_out.counter_domain_id ) AS today_out
FROM traders
JOIN counter_in ON traders.trader_id = counter_in.counter_domain_id
JOIN counter_out ON traders.trader_id = counter_out.counter_domain_id
GROUP BY traders.trader_id, traders.domain
LIMIT 0 , 30
结果:
trader_id domain today_in today_out
1 bing.com 3 3
2 google.com 4 4
3 yahoo.com 4 4
4 msn.com 3 3
5 yandex.com 1 1
最佳答案
SELECT
TableTraders.trader_id,
TableTraders.Domain,
COUNT(TableIn.trader_id) AS in_count,
COUNT(TableOut.trader_id) AS out_count
FROM TableTraders
JOIN TableIn ON TableTraders.trader_id = TableIn.trader_id
JOIN TableOut ON TableTraders.trader_id = TableOut.trader_id
GROUP BY TableTraders.trader_id, TableTraders.Domain
不确定上面示例中的表名称是什么,因为它们包含空格。替换正确的表名称。
关于Mysql分组与计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6831278/