2016-09-26 11 views
0

안녕 얘들 아 첫 번째 질문은 여기에. 아래 테이블 구조를 단순화하여 문제를 더욱 분명하게했습니다. 나는 mysql을 사용하고 있는데 어디서부터 시작해야할지 모르겠다. 내 데이터베이스에있는 각 고객에게 가장 가까운 매장을 찾아야합니다.mysql에서 어떻게 테이블 A의 모든 행과 테이블 b의 모든 행을 가장 가까운 경도와 위도를 기반으로 일치시킬 수 있습니까?

나는 테이블이 들어 "A"이 다음

id primary key 
customer - name of my customer 
longitude 
latitude 

나는이 테이블 "B"

id 
storeName - name of one of our branches 
longitude 
latitude 
storeAddress - Address of store. 

나는 내가 얻을 수 있도록이 두 테이블을 연결하려면 다음 출력

결과 집합

A.id <- customers id from table 
A.customerName 
B.id relabelled as store_id 
B.StoreName 
B.longitude 
B.latitude 
B.storeAddress 

아이디어가 있으십니까?

따라서 쿼리를 실행할 때 데이터베이스의 각 고객에 대해 가장 가까운 저장소를 얻습니다.

+0

안녕하세요, Kevin 님, 스택 오버플로를 환영합니다. 문제를 해결하기 위해 이미 시도한 것을 설명하지 않았으므로 [Help Center] (http://stackoverflow.com/help/asking)의 질문과 관련된 기사를 읽으십시오. 최소, 완전하고 검증 가능한 예제] (http://stackoverflow.com/help/mcve). –

답변

2
SELECT latitude, longitude, SQRT( POW(69.1 * (latitude - [startlat]), 2) +  POW(69.1 * ([startlng] - longitude) * COS(latitude/57.3), 2)) AS distance FROM TableName1 HAVING distance < 25 ORDER BY distance; 

이 SQL은 당신에게 가장 가까운 위치에 정렬 된 데이터를 제공하고이 질문은 두 테이블 How can an SQL query return data from multiple tables 당신을 도움이 될 것입니다. 희망이 당신을 도울 것입니다.

+0

그래, 과학 구조! – DerpyNerd

+0

감사합니다. 나는 2 천여 명의 오래된 고객이있다. 편지 병합을 위해이 작업을 수행해야하므로 고객 당 하나의 쿼리 만 수행하고 싶지는 않습니다. 조인 이야기 b = 출력을 새 표로 사용할 수있는 표를 원했습니다. –

+0

나는 약간의 제한이 있기 때문에 나는 지금 내 전화에있다. 그러나 나는 집에 가자 마자 그것을 보게 될 것이다. :) –