我的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/