찾다

 >  Q&A  >  본문

오른쪽 조인을 사용하여 선택 쿼리에 열을 추가하는 방법

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

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

컨트리 테이블.

미국 통화 기록 시트.
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粉564192131P粉564192131362일 전465

모든 응답(1)나는 대답할 것이다

  • P粉121447292

    P粉1214472922024-01-11 12:27:31

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

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

    으아아아

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

    으아아아

    조금 더 저렴해야 합니다.

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

    으아아아

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

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

    으아아아

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

    회신하다
    0
  • 취소회신하다