요청, 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 년 초).
최종 조건 (d.departure_date in ...)을 제거하면 더 많은 레코드가 반환됩니까? 그렇다면 적어도 그 조건에 문제가 있음을 알고 있습니다. 어쩌면 d.departure_date가 다른 테이블의 s_before 날짜와 정확히 일치하지 않을 수도 있습니다. 즉 초 또는 밀리 초가 다른 경우 출발일과 user_defined_date를 비교하는 것이 낫지 않습니까? –
@RichS 예, 하위 쿼리가 없으면 쿼리가 더 많은 결과를 반환합니다. – Zerus
@RichS 출발일과 user_defined_date를 비교하는 것이 낫지 않습니까? - 그게 정확히 내가하고있는 일이지만, 이렇게하려면 3 개의 테이블을 조사해야합니다. – Zerus