我的JQL中有INNER JOIN的问题。我想做的是检索所有对一个用户Z评分为平均值> = 2的用户。用户必须回答3个问题,这些问题将确定该用户Z的最终评分。有2个表格,用户和得分。

Table User    Table Score
Id_user       Id_score    Id_rated    Id_rater    Id_question    Score
1             1           1           3           1               1
2             2           1           3           2               0
3             3           1           3           3               1
              4           1           2           1               0
              5           1           2           2               0
              6           1           2           3               0


因此,我只想例如用户2。
将查询翻译为JQL时出现此错误:


  [32,184]联接关联路径不是有效的表达式。


我的查询在MySQL Workbench中运行良好

SELECT *
FROM User
INNER JOIN (
    SELECT ID_RATER, (AVG(Score.score)*5) as AvgScore
    FROM Score
    WHERE ID_RATED=1751
    AND (
        SELECT (AVG(Score.score) * 3)
        FROM Score)
    GROUP BY ID_RATER
) TabAvg
ON TabAvg.AvgScore >= 2
AND USER.ID=TabAvg.ID_RATER


转换为JQL:

String sql =
                    "SELECT U "
                    + "FROM User U "
                    + "INNER JOIN "
                    + "("
                        + "SELECT S.id_rater, (AVG(S.Score) * 3) AS AvgScore "
                        + "FROM Score S "
                        + "WHERE S.id_rated= :id_rated"
                        + "AND "
                        + "("
                            + "SELECT (AVG(S2.score) * 3) "
                            + "FROM Score S2"
                        + ") "
                        + "GROUP BY S.id_rater"
                    + ") TabAvg "
                    + "ON TabAvg.AvgScore >= 2 "
                    + "AND U.id_user = TabAvg.id_rater";

最佳答案

好吧,我仍然不知道是什么问题


  EntityManager.createQuery(sql)


但是我绕过这个


  EntityManager.createNativeQuery(sql)


通过将我的工作sql复制/粘贴到我的代码中。

关于mysql - JQL中的翻译内联,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41891857/

10-10 07:31