【发布时间】:2010-09-16 16:23:47
【问题描述】:
我正在尝试加入 4 张桌子,但遇到了问题。我的代码如下所示。
我收到的错误是
#1064 - 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 'ON advancedcatalog_font_type.id = advancedcatalog_dimensions.font_type_id) LEFT ' at line 6
advancedcatalog_dimensions
id |letter_id | font_type_id | font_size_id | dimensions | LED
----------------------------------------------------------------------------------------------
1 | | | | |
2 | | | | |
3 | | | | |
4 | | | | |
advancedcatalog_font_size
id |font_size |
--------------------------
1 | |
2 | |
3 | |
4 | |
advancedcatalog_font_type
id |font_name |
--------------------------
1 | |
2 | |
3 | |
4 | |
advancedcatalog_letter
id |casing | letter |
------------------------------------------------
1 | | |
2 | | |
3 | | |
4 | | |
有效的查询:
SELECT advancedcatalog_letter.letter,
advancedcatalog_dimensions.dimensions,
advancedcatalog_font_type.font_name
FROM (advancedcatalog_dimensions
LEFT JOIN advancedcatalog_letter ON advancedcatalog_dimensions.letter_id = advancedcatalog_letter.id)
LEFT JOIN advancedcatalog_font_type ON advancedcatalog_font_type.id = advancedcatalog_dimensions.font_type_id
LIMIT 0 , 400
不有效的查询:
SELECT advancedcatalog_letter.letter,
advancedcatalog_dimensions.dimensions,
advancedcatalog_font_type.font_name
FROM (advancedcatalog_dimensions
LEFT JOIN advancedcatalog_letter ON advancedcatalog_dimensions.letter_id = advancedcatalog_letter.id)
LEFT JOIN (advancedcatalog_font_type ON advancedcatalog_font_type.id = advancedcatalog_dimensions.font_type_id)
LEFT JOIN advancedcatalog_font_size ON advancedcatalog_font_size.id = advancedcatalog_dimensions.font_size_id
【问题讨论】:
-
在查询中为表名起别名可能会让您的生活更轻松——
advancedcatalog_letter可以缩写为l而不会混淆,advancatedcatalog_font_type=>ft等 -
引用错误也会有所帮助——“有问题”的范围从语法错误到不正确的数据。此外,对于任何一个示例,在 JOIN 标准中都不需要括号。他们会专门绕过连接标准(“ON”之后的东西),而不是封装表名声明......
-
你是对的。我的错。我列出了上面的错误
标签: sql mysql phpmyadmin