나는이 에이전트에 대한 모든 예약 및 예약에 대한 모든 객실을 얻고 일부 단순히 계산을 수행하는 다음 MySQL의 쿼리 (테이블이 booking_record 1 개 에이전트가 수 있도록 명시되어하나의 참조에 대해 두 행을 생성하는 MySQL 쿼리를 어떻게 중지합니까?
Select a.code, a.name, a.areacode, a.agentgroup,
Sum(br.basicprice) As TotalRevenueYTD,
Sum(b.adults + b.children + b.infants) As Pax,
Count(br.bookingref) As Bookings
From booking_record br
Inner Join agent a On br.agentref = a.code
Inner Join bookingroom b On b.bookingref = br.bookingref
Where br.bookingdate > '2011-01-01' And br.bookingdate < Date(Now())
Group By br.agentref
을 agentref -> a.code). 대리인은 많은 예약을 할 수 있으며, 예약은 많은 방을 가질 수 있습니다. 이 특별한 경우에는 하나의 예약에 두 개 이상의 객실이있는 경우 행이 두 번 이상 반환됩니다 (따라서 기본 가격은 두 번 계산되고 예약은 두 번 계산되므로) 내 수익과 예약이 잘못 나오는 것입니다.
정확한 정보를 어떻게 반환 할 수 있습니까?
감사합니다. Daniel.
** 즉석 문제 ** - 논리에 문제가 있습니다. MySQL은 집계되지 않은 필드에 의해'GROUP'을 허용하여 무작위 데이터를 유도합니다. ** 당신의 SELECT LIST **에 있지 않은 필드에 의해 그룹화됩니다. 이것은 주요 적색 플래그입니다. – JNK
@JNK, br.agentref = a.code'이므로 OP는 실제로 선택 목록에있는'a.code '로 그룹화됩니다. – Johan
각 테이블에 PK가 무엇인지 포함하여 질문에 테이블 정의를 추가 할 수 있습니까? –