MYSQL:ERROR 1054(42S22):'from子句'中的未知列'id_employee'

时间:2013-01-08 10:32:51

标签: mysql

我有两张桌子。

i)order_details:

CREATE TABLE `order_details` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `content` text,
  `id_employee` INT(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `FK_id_employee` (`id_employee`),
  CONSTRAINT `FK_id_employee` FOREIGN KEY (`id_employee`) REFERENCES `employees` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;

ii)员工:

 CREATE TABLE `employees` (   `id` INT(11) NOT NULL AUTO_INCREMENT,   `firstname` text NOT NULL,   `lastname` text NOT NULL,   `salary` FLOAT DEFAULT NULL,   PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 ;

我想获得员工3负责的第一个名字,姓氏和订单详情。我用过这个:

SELECT lastname, firstname, content FROM order_details INNER JOIN employees USING (id_employee) WHERE id_employee = 3;

但我收到此错误消息:ERROR 1054 (42S22): Unknown column 'id_employee' in 'from clause'并且不知道它来自哪里:(

4 个答案:

答案 0 :(得分:4)

使用USING时,两个表中的列名必须相同。您在id_employee表格中没有employee。所以你应该使用它来代替使用ON条件来连接两个表:

SELECT e.lastname, e.firstnam, o.content 
FROM order_details o
INNER JOIN employees e
  ON  o.id_employee = e.id 
WHERE o.id_employee = 3;

来自MySQL docs

  

USING(column_list)子句指定必须存在的列的列表   在两个表中。如果表a和b都包含列c1,c2和c3,   以下连接比较两个表中的相应列

答案 1 :(得分:2)

order_details确实有id_employee列,但员工表却没有。使用

SELECT lastname, firstnam, content
FROM order_details od
INNER JOIN employees e on od.id_employee = e.id
WHERE od.id_employee = 3;

为了加入不同的列名。如果两个表中的列名相同,则可以使用using

答案 2 :(得分:1)

您通过USING(id_employee)加入,但这在您的employees表中不存在。因此,加入员工身份

答案 3 :(得分:0)

怀疑缺少列 检查创建表格时输入的内容

SHOW CREATE TABLE table_name

或只看表格的列

 DESC table_name

在调试此类错误时,这可能会有所帮助。