【问题标题】:why am I not getting a value in the ifnull from rails为什么我没有从 rails 获得 ifnull 中的值
【发布时间】:2011-10-24 07:49:20
【问题描述】:

我有一个查询(它很长,但这是它的要点)

Name.find_by_sql(['SELECT IFNULL(users.last_name, "nil") FROM users 加入 user_groups ON user_groups.user_id = users.id 在 groups.id = user_groups.grous_id 上加入组 WHERE users.first_name IN (?)', ['Sam','Sally']]) AND groups.name='baseball'

现在 Sam 在棒球队,但 Sally 不在。

我希望我能回来(山姆的姓是希尔)

['Hill','nil']

但我只会得到 ['Hill']。 我不知道为什么我没有得到“零”返回。 我也在每个连接语句上尝试了“左外连接”,因为我认为这可能是“零”丢失的地方,但我仍然只得到一个返回的项目。

【问题讨论】:

    标签: mysql join ifnull


    【解决方案1】:

    您没有收到回复,因为您对 groups.name 的过滤器位于 WHERE 子句中。这将返回棒球组中的用户。如果您在 JOIN 添加条件,那么您将获得不属于棒球组的用户,并且他们将具有预期的 NULL 值:

    JOIN groups ON groups.id = user_groups.grous_id AND groups.name='baseball'
    

    【讨论】:

    • 这似乎是其中的一部分丹,不幸的是,我要找回不属于棒球组的所有用户,我正试图只从'IN' 声明。另外,我只在使用“RIGHT OUTER JOIN”时让所有用户返回,如果我只使用 JOIN,我只会返回“Hill”
    • 如果您要让所有用户返回,那么 users.first_name 过滤器肯定没有得到正确应用。不幸的是,我不熟悉您使用的语法。也许只是尝试硬编码 `users.first_name IN ('Sam', 'Sally')' 以确保是您的应用程序导致了问题,而不是查询本身。
    猜你喜欢
    • 2017-08-22
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多