繁体   English   中英

在一个MySQL查询中使用两个LEFT OUTER JOINS时,如果first为空则不会触发

When using two LEFT OUTER JOINS in one MySQL Query second does not fire if first is empty

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试为我正在建立的摄影网站建立提要。 以下是获取前一天发生的所有活动的查询。 如果在最后一天(第一个LEFT OUTER JOIN)还剩下评论,那么这非常有效,但是如果只有喜欢发生了(第二个LEFT OUTER JOIN),则返回空白。 我认为问题是,如果第一个LEFT OUTER JOIN为空,那么第二个似乎不触发。 如果我对这个假设是正确的,那么您是否知道如何使第二个点火而不考虑第一个的结果。

SELECT a.a_id
            , a.a_user_id
            , a.a_activity_type
            , a.a_activity_id
            , a.a_activity_time
            , c.ic_id 
            , c.ic_status
            , c.ic_image_id
            , c.ic_creator_id
            , c.ic_comment
            , c.ic_read_status
            , s.id 
            , s.image_id 
            , s.photographer_id
            , s.user_id
            , u.u_id
            , u.u_screen_name
            , u.u_url_screen_name
            , u.u_email
            , u.u_avatar
            , u1.u_id as currentUser
            , u1.u_email as currentEmail
            , u1.u_url_screen_name as currentScreenName
            , i.i_id
            , i.i_name
            , COALESCE(c.ic_image_id, s.image_id) as image_id
            , COALESCE(c.ic_creator_id, s.photographer_id) as other_user_id
            FROM activity AS a
                LEFT OUTER JOIN image_comments as c ON 
                a.a_activity_id = c.ic_id AND a.a_activity_type = 1
                LEFT OUTER JOIN site_likes as s ON 
                a.a_activity_id = s.id AND a.a_activity_type = 2
                LEFT JOIN users as u ON
                u.u_id = COALESCE(c.ic_creator_id, s.photographer_id)
                LEFT JOIN images as i ON
                i.i_id = COALESCE(c.ic_image_id, s.image_id)
                LEFT JOIN users as u1 ON
                u1.u_id = a.a_user_id
            WHERE a.a_activity_time >= DATE_SUB(now(), INTERVAL 1 DAY)
            AND
            COALESCE(c.ic_creator_id, s.photographer_id) != a.a_user_id
            ORDER BY a.a_activity_time DESC

更新:经过进一步测试,似乎WHERE子句中的COALESCE()是问题所在。 这些字段之一将始终具有值,而另一个字段将不会具有值。 如果我摆脱了这个问题,查询工作会很好,因为我可以按原样使用它,然后在应用程序中删除需要删除的内容,但我仍然非常希望在查询中使用它。

问题暂未有回复.您可以查看右边的相关问题.
2 Rails 5 活动记录查询未显示 left_outer_joins 属性

我正在尝试进行左外连接以获取相关属性,然后按相关属性进行排序。 我的问题是相关属性 pfeature_id 未在输出中列出。 我在这里找不到任何关于我可能做错的文章。 下面的示例 1 和 2,相关的product_features.pfeature_id未显示在列表中。 在示例 3 中,原始 ...

3 使用两个JOINS或两个ON从同一个表中查询相同的值

这个问题甚至有意义吗? 我正在尝试进行查询,它从同一个表上的JOIN中提取2个不同的值。 我有和“Order”有两个值,“TakenBy”和“PackedBy”这些是Employees表中的User_ID。 大多数时候他们不会是一样的。 如何在查询中对它们进行分类? 我可以 ...

2012-08-19 20:54:33 2 69   mysql
4 在MySQL中使用JOINS

我有这个查询,它完美地工作: 但是,我需要查看ClinDate的值(在最后一个嵌套查询中),因此有人被告知我需要使用JOINS重新处理查询。 我不知道如何,有人可以帮忙吗? 谢谢。 ...

8 使用4个JOINS和优化MySQL查询

由于当前数据库崩溃,我需要尽可能优化MySQL查询。 我们有5张桌子: 订单-包含约20万条记录 语言-包含2-5 记录order_product-包含超过20万条记录 产品-包含少于100条记录 新闻通讯-包含5万多条记录 当我们尝试通过电子 ...

2017-03-16 12:54:17 2 44   mysql/ sql
9 当存在多个left_joins时,查询将忽略顺序

我正在尝试按Posts的转化率(由unique commenters/impressions表示)进行排序。 我拥有的查询进行了计算,但是通过该计算进行排序失败。 在调查之后,即使查询是相同的,当我在两个表上联接时, order似乎也中断了。 这是一个最小的示例: 这是从这些查询生 ...

10 使用JOINS和GROUP BY的MySQL查询

我正在建立一个MySQL查询,但似乎无法正确处理。 我有四个表: - 顾客 - 命令 -销售率 -购买率 客户和订单之间存在一个1:n关系“客户”。 订单和sales_rates之间存在1:n关系“ ordernr”。 订单和购买率之间存在1:n关系“ orde ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM