Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 复杂多表mysql查询_Php_Mysql - Fatal编程技术网

Php 复杂多表mysql查询

Php 复杂多表mysql查询,php,mysql,Php,Mysql,我正在寻找mysql查询的帮助,以便从几个不同的表中为我的国际电话计费系统返回以下数据 在数据库中,我有一个表,其中包含每个通话记录、账单费率以及我希望在发票上显示的最后一组 我想做的是遍历表tbl_international_rates,对于每一行的总和,tbl_international_记录中的CDR_ChargedDurationMinutes,其中CDR_BillerCode=international_rate_prefix,然后*international_rate_price R

我正在寻找mysql查询的帮助,以便从几个不同的表中为我的国际电话计费系统返回以下数据

在数据库中,我有一个表,其中包含每个通话记录、账单费率以及我希望在发票上显示的最后一组

我想做的是遍历表tbl_international_rates,对于每一行的总和,tbl_international_记录中的CDR_ChargedDurationMinutes,其中CDR_BillerCode=international_rate_prefix,然后*international_rate_price Returning总收费分钟数和前缀total,或者类似于下面的内容

|--------------------------|--------------------------|--------------------------|
|        Prefix            |      total minutes       | total amount         |
|--------------------------|--------------------------|--------------------------|
|         93               |          14.3            |         $137.28          |
|--------------------------|--------------------------|--------------------------|
|         937              |          31.2            |         $418.08          |
|--------------------------|--------------------------|--------------------------|
一旦完成,我想把它们分组在一起,从mysql返回类似下表的内容

|--------------------------|--------------------------|--------------------------|
|  CountryDescription      |   CountryTotalMinutes    |      CountryTotalCosts   |
|--------------------------|--------------------------|--------------------------|
|        Afghanistan       |         45.5             |           555.36         |
|--------------------------|--------------------------|--------------------------|
这可能吗

这是数据库中表的结构

tbl_国际集团

|--------------------------|--------------------------------|
| international_group_idno | international_group_description|
|--------------------------|--------------------------------|
|            1             |         Afghanistan            |
|--------------------------|--------------------------------|
|            2             |         USA                    |
|--------------------------|--------------------------------|
|--------------------------|--------------------------|--------------------------|
|        Prefix            |      total minutes       | total amount         |
|--------------------------|--------------------------|--------------------------|
|         93               |          14.3            |         $137.28          |
|--------------------------|--------------------------|--------------------------|
|         937              |          31.2            |         $418.08          |
|--------------------------|--------------------------|--------------------------|
tbl_国际费率

|--------------------------|--------------------------|--------------------------|--------------------------|
| international_rate_idno  | international_rate_prefix| international_rate_group | international_rate_price |
|--------------------------|--------------------------|--------------------------|--------------------------|
|            1             |         93               |          1               |          9.60            |
|--------------------------|--------------------------|--------------------------|--------------------------|
|            1             |         937              |          1               |          13.40           |
|--------------------------|--------------------------|--------------------------|--------------------------|
tbl_国际记录

|--------------------------|--------------------------|--------------------------|
|          CDR_ID          |CDR_ChargedDurationMinutes|      CDR_BillerCode      |
|--------------------------|--------------------------|--------------------------|
|            1             |         4.7              |           93             |
|--------------------------|--------------------------|--------------------------|
|            2             |         5.6              |           97             |
|--------------------------|--------------------------|--------------------------|
|            3             |         9.6              |           93             |
|--------------------------|--------------------------|--------------------------|
|            4             |         25.6             |           97             |
|--------------------------|--------------------------|--------------------------|
****编辑******

使用下面的查询,我可以像下面一样返回表,但是如何按tbl_international_group中的父级对它们进行分组

|--------------------------|--------------------------------|
| international_group_idno | international_group_description|
|--------------------------|--------------------------------|
|            1             |         Afghanistan            |
|--------------------------|--------------------------------|
|            2             |         USA                    |
|--------------------------|--------------------------------|
|--------------------------|--------------------------|--------------------------|
|        Prefix            |      total minutes       | total amount         |
|--------------------------|--------------------------|--------------------------|
|         93               |          14.3            |         $137.28          |
|--------------------------|--------------------------|--------------------------|
|         937              |          31.2            |         $418.08          |
|--------------------------|--------------------------|--------------------------|
询问

select rates.international_rate_prefix as Prefix
 , sum( records.CDR_ChargedDurationMinutes ) as total_minutes
 , sum( records.CDR_ChargedDurationMinutes ) * 
rates.international_rate_retail as total_amount
from tbl_international_rates as rates
join tbl_international_records as records
  on rates.international_rate_prefix = records.CDR_BillerCode
group by rates.international_rate_prefix

修好了。这是我的解决方案:


修好了。这是我的解决方案:


这个查询看起来是在mysql内部运行的,mysql返回的是每个速率,但是我如何按每个国家对它们进行分组。我对mysql的了解一般,只是不太复杂。我注意到这仍然会返回一些重复的前缀,而不是计算结果时每行返回一个前缀。我在这里看不到函数依赖关系。您不能选择
a
b*c
,而只能选择分组依据
b
此查询似乎在mysql内部工作,mysql将返回每个费率,但是我将如何根据每个国家对其进行分组。我对mysql的了解一般,只是不太复杂。我注意到这仍然会返回一些重复的前缀,而不是计算结果时每行返回一个前缀。我在这里看不到函数依赖关系。您不能选择
a
b*c
,只能选择分组方式
b
查看我的解决方案是否给出了您的答案?查看我的解决方案是否给出了您的答案?