当前位置: 首页 > 知识库问答 >
问题:

执行自左联接时意外左转

益明朗
2023-03-14
Query query = null
        def hql = $/
                SELECT
                    c1.id,
                    c1.parentId,
                    c1.navDepth,
                    c1.navOrder,
                    c1.title,
                    c1.fileName,
                    // aliasing filenamepath column as filepath.
                    REPLACE(c1.fileNamePath, 'home/', '') AS filepath
                FROM Content AS c1

                WHERE 0 = 0
                LEFT JOIN Content AS c2
                ON c1.col1 = c2.fileNameLookup
                AND c1.col1 = c2.col1

                LEFT JOIN Content AS c3
                ON c1.col2 = c3.fileNameLookup
                AND c1.col2 = c3.col2

                LEFT JOIN Content AS c4
                ON c1.col3 = c4.fileNameLookup
                AND c1.col3 = c4.col3

                LEFT JOIN Content AS c5
                ON c1.col4 = c5.fileNameLookup
                AND c1.col4 = c5.col4

                LEFT JOIN Content AS c6
                ON c1.col5 = c6.fileNameLookup
                AND c1.col5 = c6.col5

                LEFT JOIN Content AS c7
                ON c1.col6 = c7.fileNameLookup
                AND c1.col6 = c7.col6

                LEFT JOIN Content AS c8
                ON c1.col7 = c8.fileNameLookup
                AND c1.col7 = c8.col7

                LEFT JOIN Content AS c9
                ON c1.col8 = c9.fileNameLookup
                AND c1.col8 = c9.col8

                LEFT JOIN Content AS c10
                ON c1.col9 = c10.fileNameLookup
                AND c1.col9 = c10.col9

                AND c1.isNavItem = 1
                GROUP BY c1.id
                ORDER BY c1.navDepth, c1.navOrder
                /$
                //def result = Content.executeQuery(hql)
        query = Content.executeQuery(hql).setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE)
                .addScalar("filepath", new StringType())
        List<Map<String,Object>> result = query.list()
        return result

有人能让我知道我在里面做错了什么吗?我怎样才能让它工作?

共有1个答案

阎令
2023-03-14

>

  • 放错地方:

    FROM 
    WHERE 0 = 0
    LEFT JOIN Content AS c2
    

    应该是:

    FROM
    LEFT JOIN
    LEFT JOIN
    ...
    WHERE
    GROUP BY
    ORDER BY
    

    查询中没有要设置的filepath参数,如果必须在WHERE子句中而不是在SELECT子句中:

    addScalar("filepath", new StringType())
    
    from Cat as cat
        left join cat.kittens as kitten
            with kitten.bodyWeight > 10.0
    

  •  类似资料:
    • 问题内容: 我有这些表, 和。我想执行左外部联接。 劳斯莱斯 推出 SUMing,JOINing和GROUPings之后的预期输出==> 我的代码: 但是上面代码的O / P是 我不知道我要去哪里错了-你能解释一下吗? 问题答案: 您没有做错任何事。这就是JOIN的行为 它是左边的行数X右边的行数,在您的情况下为3 x 2 = 6。 试试这个 SQLFiddle 我知道这不适用于SQL Serve

    • 问题内容: 我需要执行此查询:: 我在python中有这些类: 我如何从下面到达上面? 问题答案: 假设并且来自,并且您定义了一个关系,就应该这样做:

    • 问题内容: 我有一个网站,用户可以在其中查看电影列表,并为其创建评论。 用户应该能够看到所有电影的列表。此外,如果他们查看了电影,则他们应该能够看到他们给它的评分。如果不是,则仅显示没有得分的电影。 他们根本不在乎其他用户提供的分数。 考虑以下 我本质上想要的是 考虑以下内容: 两个测试都应打印完全相同的输出,但是,只有原始版本会吐出正确的结果表: orm会返回这个 任何试图加入其余主题的尝试,那

    • 问题内容: 我们有下面的查询。使用LEFT OUTER联接需要9秒钟才能执行。将LEFT OUTER更改为LEFT INNER可以将执行时间减少到2秒,并且返回 相同 数量的行。由于正在处理dbo.Accepts表中相同数量的行,而不论联接类型如何,为什么外层要花3倍的时间? 问题答案: 返回相同行数的事实是事后事实,查询优化器无法预先知道Accepts中的每一行在Marker中都有匹配的行,可以

    • 问题内容: 我不了解左外部联接,右外部联接的概念,或者根本不理解为什么我们需要使用联接!我正在努力解决的问题以及正在处理的表格在这里:链接 问题3(b) 在SQL中构造命令以解决以下查询,解释了为什么必须使用(外部)联接方法。[5分]“找到每名工作人员及其his属(如果有)的姓名” 问题3(c)- 使用(i)join方法和(ii)子查询方法在SQL中构造命令以解决以下查询。[10分]“查找在计算机

    • 问题内容: 这个问题已经在这里有了答案 : SQL中左右联结与左右联结之间的区别[重复] (4个答案) 6年前关闭。 我看到过称为LEFT OUTER JOIN或RIGHT OUTER JOIN的联接。在某些地方,我见过LEFT JOIN或RIGHT JOIN。我对此感到困惑。 我两天前发布了一个问题,但我无法理解解决方案提供的链接。 这些连接类型是否相同,或者两者之间有区别? 问题答案: 两者之