gpt4 book ai didi

mysql - SQL 没有为给定的用户 ID 返回正确的值

转载 作者:行者123 更新时间:2023-11-29 00:23:10 25 4
gpt4 key购买 nike

我有两个表:一个包含旅行行程详细信息,例如创建日期和标题(表名是 itineraries),另一个包含用户详细信息(表名 users ).用户可以将旅行社添加到他们的行程中。

我整理了以下声明它工作正常并且符合预期,这是我想要返回给定日期范围和旅行社 ID 的所有行程的地方:

SELECT 
itineraries.travel_agent_id,
itineraries.created_at as Date_Journey_Created,
itineraries.title,
itineraries.user_id as id

FROM `database`.`itineraries`

LEFT JOIN `database`.`users`
ON itineraries.id=users.id

WHERE itineraries.travel_agent_id='253' && (itineraries.created_at BETWEEN '2013-11-01 00:00:00' AND '2013-11-30 23:59:59')

itineraries中,用户ID字段被命名为user_id,而在users中,它只是id。没问题,我已经弄清楚如何在加入之前使用别名将 user_id 更改为 id

但我现在要做的是将 id 字段映射到 users 表中的 full_name 字段,这样我们就可以得到用户的全名和数字 ID。

在语句的第一部分选择其余表和列时,我尝试使用 SELECT users.full_name,如下所示:

SELECT
users.full_name,
itineraries.travel_agent_id,
itineraries.created_at as Date_Journey_Created,

但它只是返回对于给定的 id 不正确的数据,要么是空值,要么只是完全错误的名称。我的数据库数据是正确的,因为我可以自己手动查看 users 表,并查看给定 idfull_name 值是多少!

我是否遗漏了一些非常明显的东西?

最佳答案

您使用了错误的列来加入:

SELECT 
i.travel_agent_id,
i.created_at as Date_Journey_Created,
i.title,
i.user_id
u.full_name
FROM `database`.`itineraries` i
LEFT JOIN `database`.`users` u ON i.user_id = u.id
WHERE i.travel_agent_id='253'
AND i.created_at BETWEEN '2013-11-01 00:00:00' AND '2013-11-30 23:59:59'

通过在 SELECT 中为列名添加别名,不允许您在 where 子句中使用该别名。您可能正在加入行程的 ID。这对你来说没有多大意义。此外,您还必须使用 AND 一词代替 &&

关于mysql - SQL 没有为给定的用户 ID 返回正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20300700/

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