说,我得到了这两个表....有没有办法来优化这个mysql查询...?
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
现在,我需要从两个表
- 给定一个特定日期(比如得到以下细节,23-03- 2010年),在该特定日期支付的每家酒店的总金额总和。
- 所有这些都23-03-2010根据酒店名称
示例输出如下下令日期的行...
+------------+------------+------------+---------------+
| 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 FROM $payments JOIN $hotels ON $payments.hotel_id = $hotels.hotel_id WHERE DATE_FORMAT(payment_date,'%d-%m-%Y') = '$date_report' GROUP BY $payments.payment_date ORDER BY $payments.payment_date ASC
我加入由两个查询返回的行中的两个独立的临时表,然后使用PHP来打印表,如上图所示...
编辑2:并且也明白,如果有人提出了一种这个岗位更好的标题...;)
发布查询? – Xorlev 2010-03-31 06:42:38
@xorlev:编辑后添加查询过...谢谢... – SpikETidE 2010-03-31 06:44:32