Вы проблема заключается в том, что вы делаете это неправильно
INSERT INTO orders(menu_name, menu_id, date_of_order) VALUES('pizza', 'SELECT id FROM customers WHERE email = [email protected]', '2016-05-09')
должен быть
INSERT INTO `orders`(`menu_name`, `menu_id`, `date_of_order`) VALUES('pizza', (SELECT `id` FROM `customers` WHERE `email` = '[email protected]' limit 1), '2016-05-09');
Таким образом, вы в основном пытаетесь вставить 'SELECT id FROM customers WHERE email = [email protected]'
как строка, которая превращающая в целое (если у вас есть as int)
Создание заявлений:
CREATE TABLE `customers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(245) DEFAULT NULL,
`place` varchar(245) DEFAULT NULL,
`email` varchar(245) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
CREATE TABLE `orders` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`menu_name` varchar(245) DEFAULT NULL,
`menu_id` int(11) DEFAULT NULL,
`date_of_order` date DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FK orders menu_id customer id_idx` (`menu_id`),
CONSTRAINT `FK orders menu_id customer id` FOREIGN KEY (`menu_id`)
REFERENCES `customers` (`id`)
ON DELETE SET NULL ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
И вам Вставки:
INSERT INTO `customers` (`name`, `place`, `email`) VALUES ('bob', 'berlin', '[email protected]');
INSERT INTO `customers` (`name`, `place`, `email`) VALUES ('kary', 'dresden', '[email protected]');
INSERT INTO `customers` (`name`, `place`, `email`) VALUES ('sam', 'zurich', '[email protected]');
INSERT INTO `orders`(`menu_name`, `menu_id`, `date_of_order`) VALUES('sandwich', (SELECT id FROM customers WHERE email = '[email protected]' limit 1), '2016-05-09');
INSERT INTO `orders`(`menu_name`, `menu_id`, `date_of_order`) VALUES('fruits', (SELECT id FROM customers WHERE email = '[email protected]' limit 1), '2016-05-09');
INSERT INTO `orders`(`menu_name`, `menu_id`, `date_of_order`) VALUES('pizza', (SELECT id FROM customers WHERE email = '[email protected]' limit 1), '2016-05-09');
INSERT INTO `orders`(`menu_name`, `menu_id`, `date_of_order`) VALUES('salad', (SELECT id FROM customers WHERE email = '[email protected]' limit 1), '2016-05-09');
INSERT INTO `customers` (`name`, `place`, `email`) VALUES ('joe', 'melbourne', '[email protected]');
INSERT INTO `orders`(`menu_name`, `menu_id`, `date_of_order`) VALUES('pizza', (SELECT id FROM customers WHERE email = '[email protected]' limit 1), '2016-05-09');
и приводят
mysql> select * from customers;
+----+------+-----------+---------------+
| id | name | place | email |
+----+------+-----------+---------------+
| 1 | bob | berlin | [email protected] |
| 2 | kary | dresden | [email protected] |
| 3 | sam | zurich | [email protected] |
| 4 | joe | melbourne | [email protected] |
+----+------+-----------+---------------+
4 rows in set (0.02 sec)
mysql> select * from orders;
+----+-----------+---------+---------------+
| id | menu_name | menu_id | date_of_order |
+----+-----------+---------+---------------+
| 1 | sandwich | 2 | 2016-05-09 |
| 2 | fruits | 3 | 2016-05-09 |
| 3 | pizza | 1 | 2016-05-09 |
| 4 | salad | 1 | 2016-05-09 |
| 5 | pizza | 4 | 2016-05-09 |
+----+-----------+---------+---------------+
5 rows in set (0.02 sec)
Если вы не показать нам код, это будет очень трудно догадаться, что это неправильно. – Jocelyn
в таблице «customers» Я делаю INSERT INTO клиентов (имя, место, адрес электронной почты) VALUES ('joe', 'new_york', '[email protected]'), а в заказе tabl я делаю INSERT в заказы (menu_name , menu_id, date_of_order) VALUES ('pizza', 'SELECT id FROM customer, где email ='[email protected]', '2016-05-09') –
Нажмите EDIT под вопросом, чтобы добавить там соответствующий код. Код в комментариях едва читаем. – Jocelyn