我可以通过连接表将数据插入MySQL吗?
我以这种方式创建了我的表格,但我无法改变它。 ( 1 .Products。 2 .Photo和产品ID。 3 .Photos。)
我在想这样的事情:
INSERT INTO products JOIN photoandproductids
ON products.productid = photoandproductids.productid
JOIN photos ON
photos.photoid=photoandproductids.photoid
(productname,productcategory,imagepath,imagepath,imagepath,) VALUES
('test','test','photos/photo1','photos/photo2','photos/photo3')
此查询有什么问题?
答案 0 :(得分:0)
没有。这不能在单个INSERT
语句中完成。要将行插入三个表,需要三个INSERT
语句。
目前尚不清楚你想要达到的目标。
您可以考虑一些,例如调用执行要执行的多个INSERT
语句的存储过程。但是如果没有规范,我们就无法提出任何好的建议。
我们可能会假设您正在使用AUTO_INCREMENT id列。完成多个插入的一种可能模式是这样的:
-- repeat this for each product to be inserted
INSERT INTO products (product_name, product_category) VALUES ('test','test');
-- if insert is successful, get the value assigned to AUTO_INCREMENT col
SELECT LAST_INSERT_ID();
-- save the value returned!
-- repeat this for each photo to be inserted
INSERT INTO photo (imagepath) VALUES ('photos/photo1');
-- if insert is successful, get the value assigned to AUTO_INCREMENT col
SELECT LAST_INSERT_ID();
-- save the value returned!
-- use the saved id values to insert to the linkage table
-- repeat this for each productid that the photo is associated with
INSERT INTO photoandproductids (productid, photoid) VALUES (?,?);
如果您不添加产品,则需要运行SELECT
语句来获取产品。也就是说,如果表单中的id不可用,则从用户选择的下拉列表项中获取。