2013-11-22 2 views
0

저는 MySQL을 처음 접했을 때이 문제로 어려움을 겪고 있습니다. 나는 두 개의 서로 다른 테이블 (T1과 T2)을 가지고 있으며, T2는 T1에서 모든 요소를 ​​얻었습니다.여러 조건으로 MySQL에서 두 테이블 조인

내가 같은 T1의 모든 값에 대한 T2에서 변수 "회사"를 얻으려고 :

과 같은 몇 가지 조건을 만족
SELECT 
T2.company as company, 
T1.route as route, 
T1.departure_time, 
T1.arrival_time 

:

T1.route LIKE(CONCAT(T2.airport1,T2.airport2)) AND 
T1.departure_time = T2.departure_time AND 
T1.arrival_time = T2.arrival_time 

방법 내가 할 수 있을까? 기본 질문에 대해 유감스럽게 생각하지만 지금은 정말 필사적입니다. 정말 고맙습니다.

OBS : 그래 ..., 나쁜 부분은 두 개의 테이블이 서로 다른 소스에서 온 것입니다 내가 모든 조건 사투를 벌인거야 이유가 그래서 그들과 합류 할 고유 키 값은 이에 따라이없는

+1

테이블의 키는 무엇입니까? –

답변

0

이거 해봤 니?

SELECT 
    T2.company as company, 
    T1.route as route, 
    T1.departure_time, 
    T1.arrival_time 
from 
    t1,t2 
where 
    T1.route LIKE(CONCAT(T2.airport1,T2.airport2)) AND 
    T1.departure_time = T2.departure_time AND 
    T1.arrival_time = T2.arrival_time 
+0

그래도 그걸 시도했지만 시간이 너무 오래 걸려서 서버 타임 아웃을 받았다. 두 테이블은 각각 ​​850 만 개의 엔트리로 구성되어있다. – rodrigoburg

+0

구조에 약간 결함이있는 것 같다. 테이블을 조금 재구성해야합니다. 그들에게 적절한 기본 키/외래 키와 색인을 추가하십시오. –

0

당신은 그냥 행이 실제로 연결되어 있는지 확인 존재의 목적에 부합하는 조건을 위해, 그래서

SELECT Fields 
FROM T1 
LEFT JOIN T2 
ON T1.company=T2.company 
AND T1.route LIKE(CONCAT(T2.airport1,T1.airport2)) 
AND T1.departure_time = T2.departure_time 
AND T1.arrival_time = T2.arrival_time 

처럼, ON 절에 조건을 추가 할 수 있습니다, 조건을 결정하는 선택 될 줄은 WHERE 절 뒤에옵니다. 다음 행을 다른 행 바로 뒤에 놓으십시오.

WHERE T1.company='airFoo' 
+0

필자가 제안한 것처럼 LEFT JOIN을 실제로 사용해 보았습니다.하지만 너무 오래 걸려서 시간 초과 응답을 얻었으므로 잘못된 것을하고 있었을 것입니다. – rodrigoburg

+0

실제 쿼리를 게시 할 수 있습니까? 또한 사용 된 필드를 올바르게 색인화해야합니다. 큰 테이블이 있으면 쿼리 속도가 느려질 수 있습니다. –