有没有办法优化这个mysql查询。。。?
喂,我有这两张桌子有没有办法优化这个mysql查询。。。?,mysql,query-optimization,Mysql,Query Optimization,喂,我有这两张桌子 Table 1 : Hotels hotel_id hotel_name 1 abc 2 xyz 3 efg Table 2 : Payments payment_id payment_date hotel_id total_amt comission p1 23-03-2010
Table 1 : Hotels
hotel_id hotel_name
1 abc
2 xyz
3 efg
Table 2 : Payments
payment_id payment_date hotel_id total_amt comission
p1 23-03-2010 1 100 10
p2 23-03-2010 2 50 5
p3 23-03-2010 2 200 25
p4 23-03-2010 1 40 2
现在,我需要从这两个表中获得以下详细信息
给定一个特定日期,例如2010年3月23日,在该特定日期已付款的每家酒店的总金额。
根据酒店名称订购日期为2010年3月23日的所有行
示例输出如下所示
+------------+------------+------------+---------------+
| hotel_name | date | total_amt | commission |
+------------+------------+------------+---------------+
| * abc | 23-03-2010 | 140 | 12 |
+------------+------------+------------+---------------+
|+-----------+------------+------------+--------------+|
|| paymt_id | date | total_amt | commission ||
|+-----------+------------+------------+--------------+|
|| p1 | 23-03-2010 | 100 | 10 ||
|+-----------+------------+------------+--------------+|
|| p4 | 23-03-2010 | 40 | 2 ||
|+-----------+------------+------------+--------------+|
+------------+------------+------------+---------------+
| * xyz | 23-03-2010 | 250 | 30 |
+------------+------------+------------+---------------+
|+-----------+------------+------------+--------------+|
|| paymt_id | date | total_amt | commission ||
|+-----------+------------+------------+--------------+|
|| p2 | 23-03-2010 | 50 | 5 ||
|+-----------+------------+------------+--------------+|
|| p3 | 23-03-2010 | 200 | 25 ||
|+-----------+------------+------------+--------------+|
+------------------------------------------------------+
在必须打印的表格样本上方
我们的想法是首先显示每个酒店的合并详细信息,当单击酒店名称旁边的“*”时,付款详细信息的明细将变得可见。。。但是这可以通过一些jquery来完成。。!!!表格本身可以用php生成
现在我使用两个独立的查询:一个是根据酒店名称分组的金额和佣金的总和。下一步是为表中具有该日期的每个条目获取单独的行。当然,这是因为对计算总和的记录进行分组只会为每个酒店返回一行金额总和
SELECT DATE_FORMAT($payments.payment_date, '%d-%m-%Y %T') as payment_date,
$payments.payment_id AS payment_id,
$payments.payment_amount AS payment_amount,
$payments.agent_commision AS commision,
$payments.comm_percentage AS percentage,
$hotels.hotel_name AS hotel
SUM($payments.payment_amount) AS tot_amt
SUM($payments.agent_commision) AS tot_ag_comsn
FROM $payments
JOIN $hotels
ON $payments.hotel_id = $hotels.hotel_id
WHERE DATE_FORMAT(payment_date,'%d-%m-%Y') = '$date_report'
GROUP BY $payments.hotel_id
ORDER BY $payments.payment_date ASC
有没有一种方法可以将这两个查询组合成一个查询,并以更优化的方式执行操作
希望我说的很清楚。。谢谢你的时间和回复
编辑:也添加了查询
查询以获取总和
SELECT DATE_FORMAT($payments.payment_date, '%d-%m-%Y %T') as payment_date,
$payments.payment_id AS payment_id,
$payments.payment_amount AS payment_amount,
$payments.agent_commision AS commision,
$payments.comm_percentage AS percentage,
$hotels.hotel_name AS hotel
SUM($payments.payment_amount) AS tot_amt
SUM($payments.agent_commision) AS tot_ag_comsn
FROM $payments
JOIN $hotels
ON $payments.hotel_id = $hotels.hotel_id
WHERE DATE_FORMAT(payment_date,'%d-%m-%Y') = '$date_report'
GROUP BY $payments.hotel_id
ORDER BY $payments.payment_date ASC
我将两个查询返回的行添加到两个单独的临时表中,然后使用php打印该表,如上图所示
编辑2:还有,如果有人给这篇文章推荐一个更好的标题,我会很感激的 这是报表编写器的领域,或编程语言中的等效逻辑。是。。。当然,用这种结构打印表格是编程语言的逻辑领域。。我只是想知道应该打印在表中的详细信息是否可以通过一个查询来检索…@xorlev:编辑帖子以添加查询。。。谢谢