php - 如何使用连接超过3个表来计算列数据

标签 php mysql database

我有三张 table

tbl_product 
item_id | item_name

company_details
v_id | item_id | company_name

user_ratings 
r_id | rate | v_id 

我想统计费率并获取公司的费率。这是我的查询

SELECT  company_details.v_id,
        company_details.company_name,
        COUNT(user_ratings.rate) as vote,
        user_ratings.rate,
        tbl_product.item_name
FROM    company_details
LEFT JOIN tbl_product ON tbl_product.item_id = company_details.item_id
LEFT JOIN user_ratings ON user_ratings.v_id = company_details.v_id
GROUP BY company_details.v_id, user_ratings.rate

这是我在执行此查询后得到的信息:

v_id  company_name           vote  rate  item_name  
1     The Oberoi Udaivilas   1     4     5 Star Hotels  
1     The Oberoi Udaivilas   1     5     5 Star Hotels  
2     The Taj Mahal Palace   2     5     4 Star Hotels  
3     Rambagh Palace         1     5     3 Star Hotels  
4     Taj Lake Palace        1     5     5 Star Hotels  
5     Windflower Hall        1     3     2 Star Hotels  
5     Windflower Hall        1     5     2 Star Hotels  
6     Leela Palace Kempinski 0     n     4 Star Hotels  
7     Umaid Bhawan Palace    0     n     4 Star Hotels  
8     Hotel Ratan Vilas      0     n     4 Star Hotels  
9     The Leela Palace       0     n     4 Star Hotels  
10    The Imperial Hotel     0     n     3 Star Hotels  

您可以看到投票栏没有计数。

这就是我所期待的

v_id  company_name          vote  rate  item_name   
1     The Oberoi Udaivilas  2     5     5 Star Hotels   
2     The Taj Mahal Palace  2     5     4 Star Hotels   

但此查询并未计算 user_ratings 的费率表,因为我也想获得汇率,如果我删除 user_ratings.rate来自select子句,那么这个查询就可以工作,但是当我添加 user_ratings.rate 时在 select子句,那么此查询不会将比率计算为(投票),而是在每次计数中返回一行。

最佳答案

您应该从 group by 子句中删除 user_ ratings.rate 并添加 tbl_product.item_name

SELECT
    company_details.v_id,
    company_details.company_name,
    tbl_product.item_name,
    COUNT(user_ratings.rate) as vote,
    avg(user_ratings.rate) as rate
FROM
    company_details
    LEFT JOIN tbl_product ON tbl_product.item_id = company_details.item_id
    LEFT JOIN user_ratings ON user_ratings.v_id = company_details.v_id
GROUP BY company_details.v_id, company_details.company_name, tbl_product.item_name;

关于php - 如何使用连接超过3个表来计算列数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43466733/

相关文章:

javascript - 如何使用PHP从mysql中查询图像

php - 使 PHP 网站规模更大

MySQL 服务器无法在 Raspberry Pi 上启动

php - 如何在 UPDATE 语句中使用 INNER JOIN?

database - 有人认识这种语法或编程语言吗?

sql - 如何在不使用完整备份的情况下使用生产数据刷新 SQL Server 的测试实例

php - 如何为横幅标志设置超链接。请帮忙

php - 如何将组与 preg_match 一起使用?

php - 如何使用 CodeIgniter 插入多个表

java - 将 Android 短信对话标记为已读。 Sql 查询一次又一次执行。(错误)