2016-05-19 9 views
0

内のサブクエリのヘルプ私はSQLクエリを構築しようとしているが、私は次のエラーを受信して​​います:MYSQL:WHERE句

#1054 - Unknown column 'r.id' in 'where clause' 

これは私のクエリです:

SELECT *, COUNT(id) AS result_count 
    FROM rate_clicks AS rc 
    WHERE click_type = 'details' 
    AND created_at > 1463517035 
    AND rate <= (SELECT rate 
     FROM rates AS r 
     WHERE r.id = rc.rate_id) 
    GROUP BY rate_id 
    ORDER BY result_count DESC LIMIT 5 

私は前にサブクエリを使用していないので、これは私が失敗している場所であると仮定します。あなたの助けが大変ありがとう!

+2

はバッククォートIDで中r.idからバッククォートまたはput Rを取り除く:あなたはこの使用間違っバッククォート

の変化を持っていますbackticksを実行し、 'rc.rate_id'のためにも行います –

+0

あなたはyoを共有できますか?あなたはテーブル構造ですか? – Jaumzera

答えて

1

MySQLはサブクエリの親のエイリアスを受け入れません。代わりに参加する必要があります:

SELECT *, COUNT(id) AS `result_count` 
FROM `rate_clicks` AS `rc` 
WHERE `click_type` = 'details' AND `created_at` > 1463517035 
AND `rate` <= (SELECT `rate` FROM `rates` AS `r` 
       inner join `rate_clicks` as rc1 `r.id`=`rc1.rate_id`) 
GROUP BY `rate_id` 
ORDER BY `result_count` DESC LIMIT 5 
1

私はそれを回答として投稿してください。

WHERE `r.id`=`rc.rate_id` 

サンプル

WHERE `r`.`id`=`rc`.`rate_id` 

MariaDB [bb]> SELECT * FROM useindex i WHERE `i.num1`= 999 LIMIT 10; 
ERROR 1054 (42S22): Unknown column 'i.num1' in 'where clause' 
MariaDB [bb]> 
MariaDB [bb]> SELECT * FROM useindex i WHERE `i`.`num1`= 999 LIMIT 10; 
+-------+------+------+ 
| id | num1 | num2 | 
+-------+------+------+ 
| 511 | 999 | 686 | 
| 1878 | 999 | 687 | 
| 3241 | 999 | 686 | 
| 3245 | 999 | 688 | 
| 4608 | 999 | 687 | 
| 5971 | 999 | 685 | 
| 5975 | 999 | 687 | 
| 7338 | 999 | 686 | 
| 8705 | 999 | 687 | 
| 10068 | 999 | 686 | 
+-------+------+------+ 
10 rows in set (0.00 sec) 

MariaDB [bb]>