我有两张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'
并且不知道它来自哪里:(
4条答案
按热度按时间dwbf0jvd1#
使用
USING
时,两个表中的列名必须相同。employee
表中没有id_employee
。因此,应改用以下语句,该语句使用ON
条件来联接两个表:从MySQL docs开始:
USING(column_list)子句指定两个表中都必须存在的列的列表。如果表a和b都包含列c1、c2和c3,则以下联接将比较这两个表中的相应列
rryofs0p2#
order_details
确实有id_employee
列,但employees表没有。使用以便连接不同的列名。如果两个表中的列名相同,则可以使用
using
。d7v8vwbk3#
您正在通过USING(id_employee)JOINing,但它不在您的employees表中。因此,将employees id与它连接
vnzz0bqm4#
如果怀疑缺少列,请检查创建表时键入的内容
或者只查看表中的列
这在调试这些错误时是有用的。