두 전화 회사 간의 콜금리를 비교하려고합니다. 다음과 같이 내가 두 개의 테이블이 있습니다MySQL을 사용하여 요율 테이블에서 통화 비용을 계산하십시오.
CREATE TABLE 18185_rates (
calldate DATE,
calltime TIME,
calledno VARCHAR(20),
duration INTEGER(8),
callcost FLOAT(5 , 3)
);
CREATE TABLE int_rates (
dialcode VARCHAR(20),
description VARCHAR(20),
callcost FLOAT(5 , 3)
);
18185_rates은 전화 시스템에서 통화 데이터 기록을 포함, 몇 가지 예를 들어 값은 다음과 같이
calldate,calltime,calledno,duration,callcost
2013-07-30,11:21:38,35342245738,10,0.050
2013-07-30,16:19:25,353872565822,37,0.130
2013-08-02,08:31:12,65975636187,1344,0.270
2013-08-05,11:03:53,919311195965,2356,1.640
테이블 int_rates 다른 공급자로부터 통화 요금 데이터를 포함 다음과 같은 형식 :
dialcode,description,callcost
1,USA,0.012
1204,Canada,0.008
1204131,Canada,0.018
1226,Canada,0.008
1226131,Canada,0.018
1242,Bahamas,0.137
1242357,Bahamas Mobile,0.251
1242359,Bahamas Mobile,0.251
내가 18185_rates의 호출이 다른 제공자와 비용이 얼마나 많이 볼 수 있도록 내가 비교를 실행하려합니다. int_rates 가변 길이 전화 걸기 코드를 기반으로 두 테이블을 조인하는 방법을 해결할 수 없습니다. 아래 @Gordon Linoff의 도움 후
, 나는 다음과 같은 코드로 왔어요 : 난 당신이 가장 긴 접두사가 비용을 각각의 전화 번호와 일치 할 것을 가정하고SELECT
r.*,
(SELECT permin
FROM int_rates ir1
WHERE r.calledno LIKE CONCAT(ir1.dialcode, '%')
ORDER BY dialcode DESC
LIMIT 1) AS newcostpermin
FROM
18185_rates r;
@FilipeSilva 죄송합니다. 필자는 데이터의 하위 집합만을 예로 듭니다. int_rate 테이블에서 18185_rates의 모든 통화에 대해 가격이 책정되어야합니다. – btongeorge