2012-03-16 37 views
0

我在PHP下面的代码:MySQL错误在嵌套查询

SELECT (
    SELECT (
     SELECT `forum_posts.id`,`forum_posts.author`,`forum_posts.author_id`, `forum_boards.date`, MIN(`forum_posts.date`) FROM `forum_posts` 
     WHERE `parent` IN 
      (SELECT `id` FROM `forum_boards` WHERE `parent`="'.Oflow(intval((isset($_GET['id']) ? $_GET['id'] : '0'))).'") 
     INNER JOIN `forum_boards` 
     ON `forum_boards.id`=`forum_posts.id` 
     ORDER BY `update_date` DESC 
     LIMIT 1 
     GROUP BY `parent`; 
    ) ORDER BY `order_large`,`order`; 
) UNION (
    SELECT `name`,`id`,`info`,`parent_name` FROM `forum_boards` WHERE `parent`="'.Oflow(intval((isset($_GET['id']) ? $_GET['id'] : '0'))).'" ORDER BY `order_large`,`order 
) 

这是一个脚本来得到一个论坛系统板和职位名单。它应该做的是从表格“板”和“帖子”中获取数据。然后尝试在当前正在查看的董事会的子板中找到最新的帖子。然后,它试图加入“父母”和董事会“ID”togeather,以便可以匹配列,并相应地对帖子进行排序。最后,执行联合会将新发现的和有序的帖子与实际的论坛数据结合起来。

错误:

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 'INNER JOIN forum_boards ON forum_boards.id = forum_posts.id ORDER BY' at line 7

的问题是,它不工作!我已经仔细检查了每一列和表名,并且它们都存在。这是一个非常“alpha”的代码,所以如果你有任何效率提示,那就太棒了。

回答

0

不能INNER JOIN这是你的查询试图做

SELECT (
    SELECT (
     SELECT `forum_posts.id`,`forum_posts.author`,`forum_posts.author_id`, `forum_boards.date`, MIN(`forum_posts.date`) FROM `forum_posts` 
     WHERE `parent` IN 
      (SELECT `id` FROM `forum_boards` WHERE `parent`="'.Oflow(intval((isset($_GET['id']) ? $_GET['id'] : '0'))).'") 
     INNER JOIN `forum_boards` ## This is effectively JOINing within a WHERE clause 
     ON `forum_boards.id`=`forum_posts.id` 
     ORDER BY `update_date` DESC 
     LIMIT 1 
     GROUP BY `parent`; 
    ) ORDER BY `order_large`,`order`; 
) UNION (
    SELECT `name`,`id`,`info`,`parent_name` FROM `forum_boards` WHERE `parent`="'.Oflow(intval((isset($_GET['id']) ? $_GET['id'] : '0'))).'" ORDER BY `order_large`,`order 
) 

您可能需要重新考虑你的查询一点点的WHERE子句。

+0

那么你有什么建议如何做到这一点? – 2012-03-18 07:50:09

+0

@ConnorPeet我不是100%清楚你想达到什么。也许发布一些样本数据和一些样本输出来澄清它。 – liquorvicar 2012-03-18 08:34:47