在这个主题的任何地方都很难搜索......基本上,我从两个表中选择,每个表都有JOIN子句.如果我按每个表分开查询,两者都工作正常...下面看起来逻辑上对我来说..但它给了我一个错误:
Error Code: 1054. Unknown column 'catalogue.ID' in 'on clause' 0.000 sec
Run Code Online (Sandbox Code Playgroud)
这个查询是否可行,我在这里缺少什么?
SELECT `catalogue`.`ID`,`catalogue`.`Catalogue`,`catalogue`.`Artist`,`catalogue`.`Title`, `catalogue`.`Street_Date`,
`label`.`label_name` as `label`,
`format`.`format_name` as `Format`,
`schedule`.designer,`schedule`.`MO`,
`packtype`.`description` as `Package`,
`manufacturer`.`description` as `Manufacturer`
FROM `catalogue`, `manufacture`
LEFT JOIN `schedule` ON (`schedule`.`cat_id` = `catalogue`.`ID`)
LEFT JOIN `label` ON (`catalogue`.`label` = `label`.`Lbl_ID`)
LEFT JOIN `format` ON (`catalogue`.`format` = `format`.`Fmt_ID`)
LEFT JOIN `packtype` ON `packtype`.`pack_id` = `manufacture`.`pack_id`
LEFT JOIN `manufacturer` ON `manufacturer`.`man_id` = `manufacture`.`manuf`
WHERE `catalogue`.`Street_Date`="2014-03-17" and `manufacture`.`cat_id` = `catalogue`.`ID`
ORDER BY `catalogue`.`Catalogue` asc LIMIT 1 , 10
Run Code Online (Sandbox Code Playgroud)
你是混合join类型,所以这是你得到的问题之一.您可以通过更换解决这个问题,有cross join:
FROM `catalogue` cross join `manufacture`
LEFT JOIN `schedule` ON (`schedule`.`cat_id` = `catalogue`.`ID`)
LEFT JOIN `label` ON (`catalogue`.`label` = `label`.`Lbl_ID`)
LEFT JOIN `format` ON (`catalogue`.`format` = `format`.`Fmt_ID`)
LEFT JOIN `packtype` ON `packtype`.`pack_id` = `manufacture`.`pack_id`
LEFT JOIN `manufacturer` ON `manufacturer`.`man_id` = `manufacture`.`manuf`
Run Code Online (Sandbox Code Playgroud)
但是,令我惊讶的是join,这些表之间没有条件.
哦,我看到了这个状况where.呸!
FROM `catalogue`
LEFT JOIN `manufacture` ON `manufacture`.`cat_id` = `catalogue`.`ID`
LEFT JOIN `schedule` ON (`schedule`.`cat_id` = `catalogue`.`ID`)
LEFT JOIN `label` ON (`catalogue`.`label` = `label`.`Lbl_ID`)
LEFT JOIN `format` ON (`catalogue`.`format` = `format`.`Fmt_ID`)
LEFT JOIN `packtype` ON `packtype`.`pack_id` = `manufacture`.`pack_id`
LEFT JOIN `manufacturer` ON `manufacturer`.`man_id` = `manufacture`.`manuf`
Run Code Online (Sandbox Code Playgroud)
实际记录了这个问题:
但是,逗号运算符的优先级小于INNER JOIN,CROSS JOIN,LEFT JOIN等.如果在存在连接条件时将逗号连接与其他连接类型混合,则可能会出现'on子句'中未知列'col_name'形式的错误.有关处理此问题的信息将在本节后面给出.
简单的解决方案是:永远不要,在from条款中使用.如果您想要交叉连接,请使用cross join.
| 归档时间: |
|
| 查看次数: |
41 次 |
| 最近记录: |