말, 나는 23-03-,이 두 테이블 ....이 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
지금, 나는 특정 날짜 (예를 들어 감안할 때 두 테이블
- 에서 다음과 같은 세부 정보를 얻을 필요가 있어요 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로 생성 될 수 있습니다 ...
지금 당장 저는 호텔 이름으로 그룹화 된 금액과 수수료의 합계를 얻기 위해 두 가지 별도의 쿼리를 사용하고 있습니다. 다음은 테이블에 해당 날짜가있는 각 항목의 개별 행을 가져 오는 것입니다. 물론 sum() 계산을위한 레코드를 그룹화하면 금액의 합계가있는 각 호텔에 대해 하나의 행만 반환되기 때문에 ...
단일 쿼리로 두 쿼리를 결합 할 수있는 방법이 있습니까? 더 최적화 된 방법으로 작업을 수행 할 수 있습니다. ??
희망은 내가 분명히 존재하고 .. 시간 내 주셔서 감사 및 응답 ...
편집 : 합계()
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
@xorlev : 게시물을 편집하여 쿼리를 추가해도 ... 감사합니다 ... – SpikETidE