首页 > 解决方案 > PHP-如何合并/加入 MySQL 表?

问题描述

我正在尝试使用 MySQLi 查询在 PHP 中合并两个表。我有一个带有 table2 的数据库,其中包含: Country|Region(means Continent)|Value|Area(means Total, Rural or Urban)

在此处输入图像描述

我需要按区域对值求和,因此我执行:

$query1 = mysqli_query($con,"SELECT  Country, Region, SUM(Value) as Value2 FROM table2 WHERE table2.Area='$area' GROUP BY (table2.Region IN ($region)) ");

$query1 包含 5 行,其中包含大陆的相应值。现在,我想获得一个包含所有国家及其对应大陆价值的表格,我的意思是,如果我在 table2 中有西班牙及其价值,现在我想要西班牙与相关的汇总欧洲价值。

我正在尝试执行此代码:

$result = mysqli_query($con,"SELECT Country,Region FROM table2 WHERE Region IN ($region)");
$result = mysqli_query($con,"SELECT Country,Value FROM $result INNER JOIN $query1 ON $result.Region = $query1.Region");

我认为错误是我将 $result 用作表,也许这个对象不是表,但我不知道。执行最后一个查询时出现致命错误,但它不起作用。

我怎样才能得到一个汇总的值(在query1中获得)和不同国家的表?我认为主要问题是带有变量的sintax和查询结果的结构

标签: phpmysqlsqlmysqli

解决方案


我认为您误解了 a 的join作用。它不会将多个查询组合在一起。

如果我正确理解您的问题,那么您只有 1 个名为table2. 在这种情况下,您可能不需要join.

如果您想查看countryregion和它sum的值,那么您可以使用group by CountryRegion

SELECT Country, Region, sum(Value) 
FROM table2 
GROUP BY Country, Region
WHERE Region = 'Europe and Central Asia'
;

如果您想查看region及其sum值,那么您可以group by Region.

SELECT Region, sum(Value) 
FROM table2 
GROUP BY Region
;

如果这不是您想要的,请编辑您的问题并向我们展示所需输出的示例。就目前而言,您的要求尚不清楚。

所需输出的示例将帮助我们回答您的问题。

+--------------+------+
| 地区 | 总和 |
+--------------+------+
| 欧洲和中亚| 68.0 |
| 非洲 | 59.5 |
| 阿拉伯国家 | 46.0 |
+--------------+------+

推荐阅读