gpt4 book ai didi

mysql - 从 Travel_point 表中获取 tp.address_from 和 tp.address_to

转载 作者:行者123 更新时间:2023-11-29 07:56:49 25 4
gpt4 key购买 nike

我正在为 get tp.address_fromtp.address_to 构建一个 View ,但我无法正常工作。这是我正在处理的查询:

SELECT
`tp`.`address_from` AS `address_from`,
`tp`.`address_to` AS `address_to`,
`bk`.`firstname` AS `firstname`
FROM
(
`book` `bk`
LEFT JOIN `travel_point` `tp` ON(
(
(`bk`.`tp_from` = `tp`.`id`)
AND(`bk`.`tp_to` = `tp`.`id`)
)
)
)

但它不起作用,因为我总是得到一组空结果,如下图所示:

enter image description here

booktravel_point 表之间存在两次相同的关系:tp_frombook 上的 FK,并且tp_to 是一个 FK,并且都指向 travel_point.id 也许这就是问题所在,但我还没有看到它。无论如何,我将 SQL 模式保留在 this link 中。因为有点大,对此表示歉意,但我提供了与测试目的相同的数据。

我做错了什么?

PS:您可以查看我留下的图像上的数据,正如我所说,数据是共享的

book_table travel_point

最佳答案

LEFT JOIN特别为左侧表的每个行返回一行;如果没有ON然后匹配NULL在右侧表特有的列中返回。对于为每个 book 返回一行的选择行,带有NULL地址 id不同于tp_fromtp_to 。如果这不是您想要的,请不要使用 LEFT JOIN 。你没有说出你真正想要什么,所以很难给你其他建议。大概只是使用 JOIN .

除了你的NULL问题:

猜测您的表格的含义,您的查询(在删除 LEFT 后)列出了往返预订的名字和相应的端点地址。旅行点似乎不太可能有出发地址和目的地地址。难道真的只有旅行点address ? (但也许旅行点是行程中的一个链接,它知道其前/自和后/目的地地址。)您似乎也不太可能两次列出同一旅行点的地址。对于预订的名字和端点地址,您需要加入 travel_point两次,每个端点一次。 (就像在不同查询的另一个答案中一样。)

SELECT tpf.address AS address_from, tpt.address AS address_to, bk.firstname
FROM book bk
JOIN travel_point tpf ON bk.tp_from = tpf.id
JOIN travel_point tpt ON bk.tp_to = tpt.id

关于mysql - 从 Travel_point 表中获取 tp.address_from 和 tp.address_to,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24937626/

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