从另一个表中选择计数更改值

时间:2018-02-11 08:56:12

标签: php mysql

我想问一下

我有2张桌子:

  1. 表产品(否,product_name,价格,城市)
  2. table city(no_city,city_name)
  3. 表产品字段“city”中的

    显示数据“no_city”

    我的意思是表产品中的这个:

    no | product_name | price | city
    1  | apple        | $5    | 1
    

    在这样的表城中:

    no_city | city_name
    1       | london
    

    我有一个chartjs的代码

    我使用数据库中的计数数据,这是我的代码

    $city = $GLOBALS['conn']->GetAll("SELECT city AS `labels`, COUNT(city) AS `values` FROM product GROUP BY city");
    

    在图表预览数据城市显示“1”它应该是城市“伦敦”

    问题是如何将图表预览中的数字“1”更改为城市名称“london”

    我尝试使用INNER JOIN而不是effectiv

    先生,请帮帮我

    如何将图表预览中的数字“1”更改为城市名称“london”

    谢谢

2 个答案:

答案 0 :(得分:0)

使用联接从其他表中引入城市名称:

SELECT
    c.city_name AS labels,
    COUNT(p.city) AS values
FROM city c
LEFT JOIN product p
    ON p.city = c.no_city
GROUP BY
    c.no_city, c.city_name

请注意,将city连接到product表是合乎逻辑的,因为这可以保证每个城市都会出现在结果集中。对于那些没有产品的城市,将报告为零。

答案 1 :(得分:0)

您可以使用LEFT JOIN来处理没有产品的城市的情况。

试试这段代码:

$city = $GLOBALS['conn']->GetAll(
  "SELECT
     city.city_name AS `labels`,
     COUNT(product.city) AS `values`,
     city.no_city
   FROM city c
   LEFT JOIN product p
     ON p.city = c.no_city
   GROUP BY c.no_city"
);
相关问题