Sie Problem ist, dass Sie das falsch
INSERT INTO orders(menu_name, menu_id, date_of_order) VALUES('pizza', 'SELECT id FROM customers WHERE email = [email protected]', '2016-05-09')
sollte
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');
Also im Grunde
sein tun Sie versuchen
'SELECT id FROM customers WHERE email = [email protected]'
als Zeichenfolge einzufügen, die in int konvertiert (wenn Sie es haben als int)
Statements erstellen:
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;
Und Sie Einfügungen:
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');
und
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)
führen Wenn Sie uns einen Code nicht zeigen, wird es sehr schwer sein, zu erraten, was falsch ist. – Jocelyn
in der Tabelle 'Kunden' INSERT INTO Kunden (Name, Ort, E-Mail) VALUES ('joe', 'new_york', '[email protected]') und in die Bestellungen tabl ich INSERT in Bestellungen (menu_name , menu_id, date_of_order) VALUES ('pizza', 'SELECT id FROM Kunde wo email ='[email protected]', '2016-05-09') –
Klicken Sie unter der Frage auf BEARBEITEN, um dort den relevanten Code hinzuzufügen. Code in Kommentaren ist kaum lesbar. – Jocelyn