2012-05-22 96 views
0

这里是我的查询,使错误的加入MySQL查询连接表不起作用

 $query = 'SELECT 
        a.ks_u_id, 
        a.ks_keyword, 
        b.u_photo 
       FROM 
       '.T_KEYWORD_HISTORY.' a 
       WHERE a.ks_u_id in (SELECT uf_target_id FROM '.T_USER_FOLLOW.' WHERE uf_user_id="'.$u_id.'" and uf_target_id <> "'.$u_id.'") 
       JOIN '.T_USER_ACCOUNT.' b ON b.u_id = a.ks_u_id 
       ORDER BY a.ks_time DESC 
       LIMIT 0 , 5 '; 

我收到此错误信息。

您的SQL语法有错误;检查对应于你的MySQL服务器版本正确的语法在第8行

SELECT 
    a.ks_u_id, a.ks_keyword, b.u_photo 
FROM T_KEYWORD_HISTORY a 
WHERE a.ks_u_id in (SELECT uf_target_id 
        FROM T_USER_FOLLOW 
        WHERE uf_user_id="jake" and uf_target_id <> "jake") 
JOIN T_USER_ACCOUNT b ON b.u_id = a.ks_u_id 
ORDER BY a.ks_time DESC 
LIMIT 0 , 5 

它看起来像我写的JOIN命令错误的查询附近'JOIN T_USER_ACCOUNT b ON b.u_id = a.ks_u_id ORDER BY a.ks_time DESC '使用手册。

+4

WHERE子句必须在JOIN子句之后。 –

+0

哦..它现在有效。谢谢! – james

回答

0

尝试

SELECT 
    a.ks_u_id, a.ks_keyword, b.u_photo 
FROM T_KEYWORD_HISTORY a 
JOIN T_USER_ACCOUNT b ON b.u_id = a.ks_u_id 
WHERE a.ks_u_id in (SELECT uf_target_id 
        FROM T_USER_FOLLOW 
        WHERE uf_user_id="jake" and uf_target_id <> "jake") 
ORDER BY a.ks_time DESC 
LIMIT 0 , 5 
0

JOIN条款而来的WHERE子句之前。您的查询应该是:

SELECT 
a.ks_u_id, a.ks_keyword, b.u_photo 
FROM T_KEYWORD_HISTORY a 
JOIN T_USER_ACCOUNT b ON b.u_id = a.ks_u_id 
WHERE a.ks_u_id in (SELECT uf_target_id 
       FROM T_USER_FOLLOW 
       WHERE uf_user_id="jake" and uf_target_id <> "jake") 
ORDER BY a.ks_time DESC 
LIMIT 0 , 5