오른쪽 조인을 사용하여 선택 쿼리에 열을 추가하는 방법
P粉564192131
P粉564192131 2024-01-10 18:08:33
0
1
451

전화번호 열을 기반으로 데이터베이스 통화 기록에 국가 코드를 추가하는 방법을 찾으려고 합니다. 국가와 해당 전화 걸기 코드(국가라고 함)가 포함된 테이블이 있습니다. 모든 기록을 쿼리하고 국가 코드를 추가할 수 있지만 결과를 필터링하고 페이지를 매길 수 있어야 합니다.

저는 제어할 수 없는 시스템을 사용하고 있으므로 테이블에 새 열을 추가하거나 많은 양의 코드를 다시 작성하는 것은 실제로 선택 사항이 아닙니다. 그게 내가 처리해야 할 일이야.

컨트리 테이블.

미국 통화 기록 시트.
id 이름 다이얼 코드
1 아일랜드 353
21

id12라우팅 테이블.
시작 날짜 및 시간 종료 날짜 시간 route_id 전화번호 duration_seconds
2014-12-18 18:51:12 2014-12-18 18:52:12 23 3538700000 60
2014-12-18 17:41:02 2014-12-18 17:43:02 43 18700000 120

id2343

route_id, Route_number별로 그룹화된 모든 고유 전화번호를 사용하여 지속 시간의 합계 값을 가져와야 하지만 이제 발신자를 국가별로 그룹화할 수 있도록 이 결과를 country_id별로 그룹화해야 합니다. 아래 mysql 쿼리를 사용하여 기간의 합계 값, 총 고유 전화번호 수를 모두 Route_id, Route_number로 그룹화하여 가져오고 있습니다. 이 쿼리는 오래 전에 다른 개발자가 작성한 것입니다.

으아악

country_id별로 그룹화할 수 있도록 올바른 조인 테이블에 country_id를 추가하는 모든 작업을 완료했습니다.

PHP를 사용하여 각 국가를 반복하고 아래와 같이 where 절을 사용하여 결과를 얻을 수 있다는 것을 알고 있지만 이러한 결과를 페이지로 매기거나 쉽게 필터링할 수는 없습니다.

左边(a.phonenumber, strlen($dialling_code)) = $dialling_code

경로 ID, 경로 번호 및 국가 ID별로 그룹화할 수 있도록 국가 테이블을 사용하여 국가 ID가 포함된 조인 테이블 쿼리에 열을 추가하려면 어떻게 해야 합니까? 아래 표와 같습니다.

숫자 활성화됨
1234567890 1
0987654321 1
id 시작 날짜 및 시간 종료 날짜 시간 route_id 전화번호 duration_seconds 국가_ID
1 2014-12-18 18:51:12 2014-12-18 18:52:12 23 3538700000 60 1
2 2014-12-18 17:41:02 2014-12-18 17:43:02 43 18700000 120 2

P粉564192131
P粉564192131

모든 응답(1)
P粉121447292

routescallrecord_joinRIGHT JOIN 没有任何作用,因为您已经在之间有了 INNER JOIN子查询中的 routescallrecord에서 조인 오른쪽에 있습니다.

설명한 조인을 사용할 수 있습니다 -

으아아아

그러나 결과는 동일합니다:

으아아아

조금 더 저렴해야 합니다.

国家/地区的加入,以确保callrecord의 모든 번호가 여러 국가에 가입되지 않는지 테스트해야 합니다. 일부 국제 전화 걸기 코드는 모호하므로 사용하는 전화 걸기 코드 목록에 따라 다릅니다.

으아아아

분명히 데이터 세트가 매우 큰 경우 위 쿼리를 일괄 처리해야 합니다.

너무 단순화하지 않았으면 좋겠지만 귀하의 질문을 제가 이해한 바에 따르면 쿼리는 다음과 같습니다.

으아아아

적절한 인덱스를 사용할 수 있다고 가정할 때 이러한 조건을 제어할 수 있도록 startdatetime 中删除 DATE_FORMAT()에서 주의를 기울여야 합니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿