전화번호 열을 기반으로 데이터베이스 통화 기록에 국가 코드를 추가하는 방법을 찾으려고 합니다. 국가와 해당 전화 걸기 코드(국가라고 함)가 포함된 테이블이 있습니다. 모든 기록을 쿼리하고 국가 코드를 추가할 수 있지만 결과를 필터링하고 페이지를 매길 수 있어야 합니다.
저는 제어할 수 없는 시스템을 사용하고 있으므로 테이블에 새 열을 추가하거나 많은 양의 코드를 다시 작성하는 것은 실제로 선택 사항이 아닙니다. 그게 내가 처리해야 할 일이야.
컨트리 테이블.
id | 이름 | 다이얼 코드 |
---|---|---|
1 | 아일랜드 | 353 |
2 | 미국1 |
시작 날짜 및 시간 | 종료 날짜 시간 | 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 |
숫자 | 활성화됨 | |||||
---|---|---|---|---|---|---|
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 |
routes
到callrecord_join
的RIGHT JOIN
没有任何作用,因为您已经在之间有了INNER JOIN
子查询中的routes
和callrecord
에서 조인 오른쪽에 있습니다.설명한 조인을 사용할 수 있습니다 -
으아아아그러나 결과는 동일합니다:
으아아아조금 더 저렴해야 합니다.
国家/地区
的加入,以确保callrecord
의 모든 번호가 여러 국가에 가입되지 않는지 테스트해야 합니다. 일부 국제 전화 걸기 코드는 모호하므로 사용하는 전화 걸기 코드 목록에 따라 다릅니다.분명히 데이터 세트가 매우 큰 경우 위 쿼리를 일괄 처리해야 합니다.
너무 단순화하지 않았으면 좋겠지만 귀하의 질문을 제가 이해한 바에 따르면 쿼리는 다음과 같습니다.
으아아아적절한 인덱스를 사용할 수 있다고 가정할 때 이러한 조건을 제어할 수 있도록
startdatetime
中删除DATE_FORMAT()
에서 주의를 기울여야 합니다.