Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 插入引用其他表的值_Mysql_Sql_Mysql Workbench - Fatal编程技术网

Mysql 插入引用其他表的值

Mysql 插入引用其他表的值,mysql,sql,mysql-workbench,Mysql,Sql,Mysql Workbench,我创建了以下简单的数据模型: 我使用以下insert语句插入值: 1表产品: 2表顺序: 到目前为止,所有这些都很有效 但是,现在我还想在表Products\u per\u Order中插入值。 正如您在数据模型中所看到的,Products_per_Order表包含Price列。在本栏中,我想在Products_idProducts栏中插入参考ID的价格。因此,我尝试使用以下insert语句,但到目前为止无法使其工作: INSERT INTO test.products_per_order (O

我创建了以下简单的数据模型:

我使用以下insert语句插入值:

1表产品:

2表顺序:

到目前为止,所有这些都很有效

但是,现在我还想在表Products\u per\u Order中插入值。 正如您在数据模型中所看到的,Products_per_Order表包含Price列。在本栏中,我想在Products_idProducts栏中插入参考ID的价格。因此,我尝试使用以下insert语句,但到目前为止无法使其工作:

INSERT INTO test.products_per_order
(Orders_idOrders, Products_idProducts, Price, Quantity)
VALUES
("1","1",(Select Price from test.products),"5"),
("1","2",(Select Price from test.products),"4"),
("2","1",(Select Price from test.products),"10"),
("3","2",(Select Price from test.products),"3"),
("3","3",(Select Price from test.products),"9");

您知道如何解决此问题吗?

您可以使用子查询从Products表中提取它

("2","1","Select Price from test.products where test.products.idProducts = '1')","10");

您很接近,但当您从test.products中选择价格时,您会选择test.products表中的所有价格。您需要使其返回一个值

INSERT INTO test.products_per_order
(Orders_idOrders, Products_idProducts, Price, Quantity)
VALUES
("1","1",(Select Price from test.products WHERE test.products.idProducts = '1'),"5"),
("1","2",(Select Price from test.products WHERE test.products.idProducts = '2'),"4"),
("2","1",(Select Price from test.products WHERE test.products.idProducts = '1'),"10"),
("3","2",(Select Price from test.products WHERE test.products.idProducts = '2'),"3"),
("3","3",(Select Price from test.products WHERE test.products.idProducts = '3'),"9");
我建议使用插入。改为选择:


这使得打字错误导致错误价格的可能性大大降低。

您的查询毫无意义。每行应该插入哪个价格?嗨,戈登,谢谢你的回答。Workbench在第x行左连接处向我显示查询有问题,运行该语句时,我还得到错误代码:1064。我试着放置,或者;在select语句之后,但无法使其工作。@Michi。MySQL绝对支持这种语法。也许你在最后一排多留了一个工会,非常感谢。现在它正在工作。我只需要更改p.idProduct=x.idProduct上的行;因为p.idProducts=x.idProduct;上缺少s;。嗨,戈登,你有什么想法吗:
("2","1","Select Price from test.products where test.products.idProducts = '1')","10");
INSERT INTO test.products_per_order
(Orders_idOrders, Products_idProducts, Price, Quantity)
VALUES
("1","1",(Select Price from test.products WHERE test.products.idProducts = '1'),"5"),
("1","2",(Select Price from test.products WHERE test.products.idProducts = '2'),"4"),
("2","1",(Select Price from test.products WHERE test.products.idProducts = '1'),"10"),
("3","2",(Select Price from test.products WHERE test.products.idProducts = '2'),"3"),
("3","3",(Select Price from test.products WHERE test.products.idProducts = '3'),"9");
insert into test.products_per_order (Orders_idOrders, Products_idProducts, Price, Quantity)
    select x.idOrder, x.idProduct, p.price, x.qty
    from (select 1 as idOrder, 2 as idProduct, 5 as qty union all
          select 1 as idOrder, 2 as idProduct, 4 as qty union all
          . . .  -- I've left these out so you can see the structure of the query
          select 3 as idOrder, 3 as idProduct, 9 as qty
         ) x left join
         test.products p
         on p.idProducts = x.idProduct;