MySQL连接2个表,结果应该是IN third_table

时间:2017-12-17 11:46:26

标签: mysql subquery

我有3个表:request,d_requests(delivery requests)和s_requests(send requests)。

“d_requests”和“s_requests”的一部分始终相同(userID,ticket_creation_date和其他一些数据)。所以它从这些表中分块并在每次插入db时发出“请求”。

现在我需要做以下事情:JOIN请求和d_requests选择一些数据,然后我需要确保这样的选择是IN 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 

我有结果,但这是偏袒的。正如我从数据库中看到的,它应该给我几行输出,而它只生成一行有1行。即使我将“user_defined_date”设置为2025-12-12,输出仍然是1行(所有票据都在2017年和2018年初)。

1 个答案:

答案 0 :(得分: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 

但是当我不知道那些表的完整模式以及你想要实现的目标时,很难提出建议。