【问题标题】:trying to join 4 tables with mysql试图用 mysql 加入 4 个表
【发布时间】: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


【解决方案1】:

advancedcatalog_dimensions.font_size_id 不存在,您在第二个查询中引用它。

【讨论】:

  • 我很抱歉。那是我的一个错误。表中确实存在 font_size_id
  • 这可能是你的括号 - 删除所有括号。
  • 你是对的。非常感谢。我正在使用括号的教程,所以我认为这就是它的完成方式。但我想知道为什么它适用于 2 个左连接而不是我们 3 个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 2011-02-08
  • 1970-01-01
相关资源
最近更新 更多