0

我有一个包含三个表的数据库,与外键相关:

行程:

| 身份证| 号码| 日期|
------------------

天:

| 身份证| 行程ID| 日期| 开始| 结束|
------------------------------

腿:

| 身份证| 日期ID| 产地| 目的地|
--------------------------------

我使用以下联接从该数据库中获取数据:

SELECT * FOM Trips t JOIN Days d
    ON t.Id = d.TripId
JOIN Legs l 
    ON d.Id = l.DayId
WHERE t.Id = tripId

它返回一个结果,其中包含与查询的行程相关的每条腿的一行,如下所示:

| 旅行.ID| 行程数| 行程.日期| 天数.ID| 天数.TripID| 天.日期| 天.开始| 天。结束| 腿.ID| Legs.DayID| 腿.产地| 腿.目的地|
-------------------------------------------------- -------------------------------------------------- ---------------------------------------------

这适用于特定的行程 ID,但假设我运行一个返回多个行程的查询,例如

    SELECT * FROM Trips t JOIN Days d
       ON t.ID = d.TripID
    加入腿 l
       ON d.Id = l.DayId
    WHERE d.Date > 日期

如何将上述查询的结果限制为单次行程,但仍获得与该行程关联的所有行?

4

1 回答 1

1

我不是 100% 确定 sqlite 语法(我更熟悉 oracle),但我认为这就是你想要的:

SELECT * FROM Trips t JOIN Days d
ON t.ID = d.TripID
JOIN Legs l
ON d.Id = l.DayId
WHERE d.ID IN (  
    SELECT ID FROM Days d WHERE d.date > date ORDER BY d.date LIMIT 1
)
于 2012-12-28T18:21:32.977 回答