gpt4 book ai didi

php - 如何寻找更高的值(value)

转载 作者:行者123 更新时间:2023-11-29 12:23:32 24 4
gpt4 key购买 nike

我有 table :

City:
id | name
1 | New York
2 | Amsterdam
3 | Paris
4 | London


Trip:
id | name
1 | aaaa // New York --> Paris --> London
2 | bbbb // London --> Paris --> Amsterdam
3 | cccc // London --> New York --> Amsterdam --> Paris
4 | dddd // Paris --> London
5 | eeee // Amsterdam --> London

TripDetails:
id | tripId | cityId| order
1 | 1 | 1 | 1
2 | 1 | 3 | 2
3 | 1 | 4 | 3
4 | 2 | 4 | 1
5 | 2 | 3 | 2
6 | 2 | 2 | 3
7 | 3 | 4 | 1
8 | 3 | 1 | 2
9 | 3 | 2 | 3
10 | 3 | 3 | 4
11 | 4 | 3 | 1
12 | 4 | 4 | 2
13 | 5 | 2 | 1
14 | 5 | 4 | 2

现在我想使用旅行按城市查找城市。

例如,如果我到达阿姆斯特丹,那么我希望收到巴黎(行程 ID = 3)和伦敦(行程 ID = 5)。不是纽约,因为在 Trip 3 中纽约位于阿姆斯特丹之前。

其他示例:

如果我到达纽约,那么我应该收到所有城市 - 巴黎(行程 1)、伦敦(行程 1)和阿姆斯特丹(行程 3)。

如果我得到巴黎,那么我应该只收到伦敦和阿姆斯特丹。

所以我有巴黎(ID:3):

SELECT * FROM "City" 
LEFT JOIN "TripDetails" ON City.id = TripDetails.cityId
WHERE TripDetails.cityId = 3
AND ????

我该怎么做?

如果有必要,我可以更改数据库的整个结构。我使用 PHP 和 MySQL。

最佳答案

尝试这样的事情。此示例适用于纽约(城市 id = 1):

SQL Fiddle

查询 1:

SELECT distinct city.name
FROM tripDetails td1
INNER JOIN tripDetails td2 ON td1.tripId = td2.tripId AND
td2.order > td1.order
INNER JOIN city ON td2.cityId = city.id
INNER JOIN trip ON td2.tripId = trip.id
WHERE td1.cityID = 1

<强> Results :

|      NAME |
|-----------|
| Paris |
| London |
| Amsterdam |

关于php - 如何寻找更高的值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28684287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com