2016-09-18 63 views
1

这变得比我可以追踪的更复杂。我从另一篇文章修改了这个查询,现在我需要添加另一个连接,但它不工作。多个JOIN太复杂了

这里是在MySQL当前的查询:

SELECT * FROM (SELECT *, 
       @rn := IF(@prev = class, @rn + 1, 1) AS rn, 
       @prev := class 
       FROM HeatWaveData 
       JOIN 
       (SELECT @prev := NULL, @rn := 0) AS vars 
       ORDER BY class, score DESC) 
       AS T1 
       WHERE rn <= 3 
       AND score > 0 
       AND dsqreason = '' 
       AND class <> '' 

现在我需要JOIN (SELECT * FROM Awards WHERE active ON Awards.award = HeatWaveData.award) 但它失败的错误。我已经尝试了几个更改和不同的东西,但不断收到错误。

这是我更新的查询和错误:

SELECT * FROM (SELECT *, 
       @rn := IF(@prev = class, @rn + 1, 1) AS rn, 
       @prev := class 
       FROM HeatWaveData 
       JOIN 
       (SELECT @prev := NULL, @rn := 0) AS vars 
       ORDER BY class, score DESC) 
       AS T1 
      LEFT JOIN 
       (SELECT * FROM Awards WHERE active = '1' 
       ON Awards.award = T1.award) AS T2 
      WHERE rn <= 3 
       AND score > 0 
       AND dsqreason = '' 
       AND class <> '' 

错误:

error: #1064 - You have an error in your SQL syntax; check the manual that 
corresponds to your MySQL server version for the right syntax to use near 
'ON Awards.award = T1.award) AS T2 WHERE rn <= 3 AN' at line 11 

回答

2

刚刚尝试,以取代您的子选择了 “正常” 的加盟:

老:

LEFT JOIN 
(SELECT * FROM Awards WHERE active = '1' 
ON Awards.award = T1.award) AS T2 

新:

LEFT JOIN Awards AS T2 
ON T2.award = T1.award AND T2.active = '1' 
+0

我工作的那一阵子。谢谢。这只是我的头 –