mysql 系统错误1054(42S22):“from子句”中的列“id_employee”未知

vawmfj5a  于 2023-02-11  发布在  Mysql
关注(0)|答案(4)|浏览(168)

我有两张table。
i)订单详细信息:

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;

(二)雇员:

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'并且不知道它来自哪里:(

dwbf0jvd

dwbf0jvd1#

使用USING时,两个表中的列名必须相同。employee表中没有id_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,则以下联接将比较这两个表中的相应列

rryofs0p

rryofs0p2#

order_details确实有id_employee列,但employees表没有。使用

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

以便连接不同的列名。如果两个表中的列名相同,则可以使用using

d7v8vwbk

d7v8vwbk3#

您正在通过USING(id_employee)JOINing,但它不在您的employees表中。因此,将employees id与它连接

vnzz0bqm

vnzz0bqm4#

如果怀疑缺少列,请检查创建表时键入的内容

SHOW CREATE TABLE table_name

或者只查看表中的列

DESC table_name

这在调试这些错误时是有用的。

相关问题