我有3张桌子 Company_categories 公司 daily_rates
我想计算公司类别中存在的所有公司的行业总量
例如,A类包含3家公司,B类包含5家公司,所以我想总结A类所有3家公司的总量,依此类推我尝试过的所有类别,但我很困惑如何处理第3类从表中我可以很容易地计算出公司中包含的类别,但不确定如何计算所有公司中存在的类别的数量
我的表格结构
company_categories
id name
+------------+----------+
| 1 | A |
|------------|----------|
| 2 | B |
|------------|----------|
companies
id name category
+------------+----------+-----------+
| 1 | co 1 | 1 |
|------------|----------|-----------|
| 2 | co 2 | 2 |
|------------|----------|-----------|
| 3 | co 3 | 1 |
|------------|----------|-----------|
daily_stock_rates
id traded_volume company_id
+------------+------------------+---------------+
| 1 | 40 | 1 |
|------------|------------------|---------------|
| 2 | 80 | 2 |
|------------|------------------|---------------|
| 3 | 30 | 3 |
|------------|------------------|---------------|
这是我的代码
$sql = mysqli_query($connect, "SELECT c.id category_id, c.name category_name, com.id, com.category count( dsr.total_traded_volume ) total_volume
FROM company_categories c
INNER JOIN companies com ON c.id = com.category
LEFT JOIN daily_stock_rates dsr ON com.id = dsr.company_id
GROUP BY com.category
ORDER BY total_volume DESC LIMIT 10");
while($data = mysqli_fetch_assoc($sql)) {
echo $data['category_name'] . ": .".$data['total_volume'];
echo "<br />";
}
任何人都可以帮助我吗
答案 0 :(得分:1)
联合两次以获得与该类别相关的所有费率
<br>
您查询最重要的差异:
答案 1 :(得分:0)
我不认为这是你错了的连接,它是选择列表和group by子句。
首先,如果您想要总量,请使用sum()
,而不是count()
。此外,如果您想要按类别划分总数,请不要在选择列表中包含这么多字段:
SELECT c.id category_id, c.name category_name, sum( dsr.total_traded_volume ) total_volume
FROM company_categories c
LEFT JOIN companies com ON c.id = com.category
LEFT JOIN daily_stock_rates dsr ON com.id = dsr.company_id
GROUP BY c.id
ORDER BY total_volume DESC LIMIT 10