是的,这里有点困惑。我的一个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个。所以你看到任何我不能做的事情?
由于
答案 0 :(得分:2)
release是一个保留字 - 尝试将别名的名称更改为其他内容。请参阅:https://dev.mysql.com/doc/refman/5.0/en/keywords.html