Php 复杂多表mysql查询
我正在寻找mysql查询的帮助,以便从几个不同的表中为我的国际电话计费系统返回以下数据 在数据库中,我有一个表,其中包含每个通话记录、账单费率以及我希望在发票上显示的最后一组 我想做的是遍历表tbl_international_rates,对于每一行的总和,tbl_international_记录中的CDR_ChargedDurationMinutes,其中CDR_BillerCode=international_rate_prefix,然后*international_rate_price Returning总收费分钟数和前缀total,或者类似于下面的内容Php 复杂多表mysql查询,php,mysql,Php,Mysql,我正在寻找mysql查询的帮助,以便从几个不同的表中为我的国际电话计费系统返回以下数据 在数据库中,我有一个表,其中包含每个通话记录、账单费率以及我希望在发票上显示的最后一组 我想做的是遍历表tbl_international_rates,对于每一行的总和,tbl_international_记录中的CDR_ChargedDurationMinutes,其中CDR_BillerCode=international_rate_prefix,然后*international_rate_price R
|--------------------------|--------------------------|--------------------------|
| 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
查看我的解决方案是否给出了您的答案?查看我的解决方案是否给出了您的答案?