内部联接mysql查询出错

时间:2015-06-14 05:11:43

标签: mysql cmd inner-join

请帮助解决内部联接错误。我在MS ACCESS中完成了这个查询 - 这是工作,但是当它在phpmyadmin或cmd中时 - 错误

SELECT zakaz.c_id, Count(zakaz.c_id) AS [counter] 
   FROM country JOIN ((resort JOIN hotel ON resort.res_id = hotel.res_id) 
   JOIN ([number] JOIN zakaz ON (number.[num_id] = zakaz.[num_id]) 
   AND   (number.[num_id] = zakaz.[cost])) ON hotel.h_id = number.[h_id]) 
   ON country.c_id = resort.c_id GROUP BY zakaz.c_id;

1 个答案:

答案 0 :(得分:0)

在MySQL中,方括号( [ ] )不是标识符的有效字符。

在Access中,这些用于包含标识符。在MySQL中,我们使用反引号字符来包含需要转义的标识符。 (这允许我们包含标识符中通常不允许的空格或其他字符,并允许我们使用保留字作为标识符。在查询中,没有标识符需要在反引号中转义。

此外,在MySQL中,这些parens不是必需的。

查询可以用人类读者更容易破译的形式表达。例如:

  SELECT zakaz.c_id
       , COUNT(zakaz.c_id) AS `counter`
    FROM country
    JOIN resort
      ON resort.c_id = country.c_id
    JOIN hotel
      ON hotel.res_id = resort.res_id
    JOIN number
      ON number.h_id = hotel.h_id
    JOIN zakaz
      ON zakaz.num_id = number.num_id 
     AND zakaz.cost   = number.num_id 
   GROUP BY zakaz.c_id

zakaz.cost需要等于number.num_id,以及zakaz.num_id ......这似乎是原始查询中指定的条件,这有点奇怪。 )