如何做简单的MySQL连接?
我有2个表格,如下所示:
companies
id | name | type_id
types
id | type
现在我要做的就是得到一个看起来像这样的数组:
Array
(
[1] => Array
(
[id] => 1
[name] => business name
[type] => type name
)
)
我在mysql中试过这个:
SELECT
`companies.id`,`companies.name`,`types.type`
FROM `companies`
RIGHT JOIN `types` ON `companies.type_id` = `types.id`
但是我收到了这个错误:
#1054 - “字段列表”中的未知列'companies.id'
我的语法是否正确?
答案 0 :(得分:4)
问题是你如下所示转义列的方式,它将整个字符串作为列名称,因此错误
`companies.id`
它应该在下面,意味着您需要单独转义表名和列名
`companies`.`id`
答案 1 :(得分:1)
您已在合格的列名称周围添加了反引号。因此,MySQL正在寻找一个名为“companies.id”的列名(名称中有句号),而不是“公司”中的“id”列。
我建议像这样编写查询:
SELECT c.id, c.name, t.type
FROM types t LEFT JOIN
companies c
ON c.type_id = t.id;
即使没有匹配的公司,您的查询(列名已修复)也会将所有行保留在types
中。以上做同样的事情。如果您真的想要所有公司,那么请将其作为LEFT JOIN
中的第一个表格。如果类型始终匹配,请使用INNER JOIN
。
注意:
LEFT JOIN
比RIGHT JOIN
更可取,因为语义更简单:保留第一个表中的所有内容以及其余表中的匹配列。答案 2 :(得分:0)
试试这个
SELECT
`companies.id`,`companies.name`,`types.type`
FROM `companies`
JOIN `types` ON where `companies.type_id` = `types.id`