MYSQL - 内部联接语法错误

时间:2015-07-03 12:31:08

标签: mysql wordpress join

是的,这里有点困惑。我的一个wordpress安装中有多个表,它们的名称和字段名称几乎都是描述性的。所以我认为你不需要任何解释。我的问题实际上是我正在尝试做的第四次内部联接。查询很简单:

SELECT * 
FROM wp_posts AS post 
    INNER JOIN wp_postmeta AS postmeta ON post.ID = postmeta.post_id 
    INNER JOIN wp_game AS game ON post.ID = game.post_id
    INNER JOIN wp_game_platform AS platform ON game.game_id = platform.GameId
    INNER JOIN wp_platform_release AS release ON release.PlatformID = platform.ID
WHERE post.post_type = 'games' AND postmeta.meta_key = 'post_views_count' AND platform.Status = 0 AND release.ReleaseDate > 1435917562
ORDER BY postmeta.meta_value DESC, game.game_id
LIMIT 100

这应该是尚未发布的所有游戏平台(Xbox版本,游戏的PC版本)的列表,并通过页面访问对它们进行排序。如您所见,页面访问存储为post meta,因此我在wp_postmeta上进行了连接。上面的查询给出了这个语法错误:

  

失败:您的SQL语法出错;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   'release ON release.PlatformID = platform.ID WHERE post.post_type附近   ='游戏'和'在第1行

这清楚地表明查询中存在我无法看到的语法错误。有趣的是,如果我运行以下查询,它会返回预期的结果(所有游戏[已发布或未发布]按其帖子访问排序):

SELECT * 
FROM wp_posts AS post 
    INNER JOIN wp_postmeta AS postmeta ON post.ID = postmeta.post_id 
    INNER JOIN wp_game AS game ON post.ID = game.post_id
    INNER JOIN wp_game_platform AS platform ON game.game_id = platform.GameId
WHERE post.post_type = 'games' AND postmeta.meta_key = 'post_views_count' AND platform.Status = 0
ORDER BY postmeta.meta_value DESC, game.game_id
LIMIT 100

起初我认为有一个JOIN限制,但经过研究后我发现限制超过60个表,远离5个。所以你看到任何我不能做的事情?

由于

1 个答案:

答案 0 :(得分:2)

release是一个保留字 - 尝试将别名的名称更改为其他内容。请参阅:https://dev.mysql.com/doc/refman/5.0/en/keywords.html