从html表单将数据插入5个表中

时间:2013-08-07 12:31:16

标签: sql insert

我有一个问题,如何下订单产品,然后将订单插入5个连接的表:ONE-TO-MANY,这些表是如此连接,当客户进入房间时,放置一个订购产品,例如咖啡或水必须在下订单的订单页面中显示,顾客坐在哪个房间,然后服务员从状态获得订单是产品是否付款。 表格是:

CREATE TABLE IF NOT EXISTS `user` (
  `user_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `type_id` int(10) unsigned NOT NULL,
  `username` varchar(50) DEFAULT NULL,
  `password` varchar(32) DEFAULT NULL,
  `first_name` varchar(100) DEFAULT NULL,
  `last_name` varchar(100) DEFAULT NULL,
  `email` varchar(50) DEFAULT NULL,
  `picture` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`user_id`),
  UNIQUE KEY `user_index1780` (`username`),
  KEY `user_FKIndex1` (`type_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=71 ;

CREATE TABLE IF NOT EXISTS `order` (
  `order_id` int(11) NOT NULL AUTO_INCREMENT,
  `time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `status` int(11) DEFAULT NULL,
  `room_id` int(11) NOT NULL,
  `user_id` int(10) unsigned NOT NULL,
  PRIMARY KEY (`order_id`),
  KEY `fk_order_room1` (`room_id`),
  KEY `fk_order_user2` (`user_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;

CREATE TABLE IF NOT EXISTS `product` (
  `product_id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  `price` float DEFAULT NULL,
  `picture` varchar(500) DEFAULT NULL,
  PRIMARY KEY (`product_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ;

CREATE TABLE IF NOT EXISTS `room` (
  `room_id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  `picture` varchar(450) DEFAULT NULL,
  `description` text,
  `user_id` int(10) unsigned NOT NULL,
  PRIMARY KEY (`room_id`),
  KEY `fk_room_user1` (`user_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

CREATE TABLE IF NOT EXISTS `item_orders` (
  `order_id` int(11) NOT NULL,
  `product_id` int(11) NOT NULL,
  `quantity` int(11) DEFAULT NULL,
  PRIMARY KEY (`order_id`,`product_id`),
  KEY `fk_order_has_product_product1` (`product_id`),
  KEY `fk_order_has_product_order1` (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `type_user` (
  `type_id` int(10) unsigned NOT NULL,
  `name` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`type_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

现在,在我内心加入他们之后,订购产品的任何事情都没有发生。

查询是:

SELECT order.order_id,
       user.first_name AS user,
       product.name,
       product.price,
       item_orders.quantity,
       product.price * item_orders.quantity AS sum,
       room.name,
       order.time,
       order.status
FROM user, product, room, `order`, item_orders
WHERE user.user_id = room.user_id
  AND order.room_id = room.room_id
  AND order.order_id = item_orders.order_id
  AND product.product_id = item_orders.product_id

这种加入很好,它只需要输入一个新的连接order_id ='$ order_id',就是这样。

1 个答案:

答案 0 :(得分:0)

如果您在查询引用的所有表中插入数据:

INSERT INTO type_user (type_id) VALUES (1);
INSERT INTO user (user_id, type_id, first_name) VALUES (1, 1, 'cappie');
INSERT INTO room (room_id, user_id, name) VALUES (10, 1, 'Room 10');
INSERT INTO `order` (order_id, room_id, user_id, status) VALUES (1 , 10, 1, 3);
INSERT INTO product (product_id, name, price) VALUES (100, 'Product A', 99.99);
INSERT INTO item_orders (order_id, product_id, quantity) VALUES (1, 100, 15);

您提供的查询(在评论中)将正常运行并返回(几乎)正确 Results

| ORDER_ID |   USER |      NAME |          PRICE | QUANTITY |               SUM |                          TIME | STATUS |
--------------------------------------------------------------------------------------------------------------------------
|        1 | cappie | Product A | 99.98999786377 |       15 | 1499.849967956543 | August, 08 2013 07:03:34+0000 |      3 |

您有浮点舍入错误,但that's a story for another day

以下是完整的SQL Fiddle