2017-12-17 11 views
0

요청, d_requests (전달 요청) 및 s_requests (요청 전송) 테이블이 3 개 있습니다.MySQL은 2 테이블을 결합하고 결과는 IN이되어야합니다. third_table

"d_requests"와 "s_requests"의 일부는 항상 동일합니다 (userID, ticket_creation_date 및 일부 다른 데이터). 따라서이 테이블에서 청크가 만들어지고 db에 대한 각각의 삽입시 "요청"이 발생합니다.

는 이제 다음을 수행해야합니다 일부 데이터를 선택 요청과 d_requests 가입 후 나는 그런 선택 s_requests '열'send_before "나는 결과가

SELECT r.type, r.request_from, r.request_to, d.departure_date 
    FROM requests as r 
    JOIN d_requests as d ON r.request_id = d.requests_id 
    WHERE r.type='d' AND r.request_from='Beijing' 
    AND r.request_to='Tokyo' AND d.departure_date 
      IN (SELECT s.s_before from s_requests s where s.s_before<='user_defined_date') 
    ORDER BY d.departure_date 

에 있는지 확인해야하지만 그것은 부분적이다. DB에서 볼 수 있듯이 1 행의 테이블 만 생성하는 동안 출력의 여러 행을 제공해야합니다. "user_defined_date"를 2025-12-12와 같이 설정하더라도 출력은 여전히 ​​1 행입니다 (모든 티켓은 2017 년과 2018 년 초).

+0

최종 조건 (d.departure_date in ...)을 제거하면 더 많은 레코드가 반환됩니까? 그렇다면 적어도 그 조건에 문제가 있음을 알고 있습니다. 어쩌면 d.departure_date가 다른 테이블의 s_before 날짜와 정확히 일치하지 않을 수도 있습니다. 즉 초 또는 밀리 초가 다른 경우 출발일과 user_defined_date를 비교하는 것이 낫지 않습니까? –

+0

@RichS 예, 하위 쿼리가 없으면 쿼리가 더 많은 결과를 반환합니다. – Zerus

+0

@RichS 출발일과 user_defined_date를 비교하는 것이 낫지 않습니까? - 그게 정확히 내가하고있는 일이지만, 이렇게하려면 3 개의 테이블을 조사해야합니다. – Zerus

답변

1

난 당신이

SELECT r.type, r.request_from, r.request_to, d.departure_date 
FROM requests as r 
INNER JOIN d_requests as d ON r.request_id = d.requests_id 
INNER JOIN s_requests as s ON r.request_id = s.requests_id 
WHERE r.type='d' AND r.request_from='Beijing' 
AND r.request_to='Tokyo' AND s.s_before<='user_defined_date' 
ORDER BY d.departure_date 

뭔가를해야 할 수도 있습니다 생각하지만 내가 그 테이블의 전체 스키마를 모를 때 제안을하는 것은 매우 어렵습니다, 그것은 당신이 달성하려고하는 것입니다.

+0

나는 그것이 내가해야 할 필요가있는 것과 그것이 잘 작동한다는 것을 결국 알아 냈습니다. - 간단하게 user_defined_date를 가져 와서 모두 해결합니다. 그래도 조언과 노력에 감사드립니다. 나는 대답 할 것입니다. – Zerus