MySQL - 每个 ID 的 INSERT 或 JOIN 表行
Posted
技术标签:
【中文标题】MySQL - 每个 ID 的 INSERT 或 JOIN 表行【英文标题】:MySQL - INSERT or JOIN Table rows for every ID 【发布时间】:2014-10-01 18:17:38 【问题描述】:我有一张订购物品的桌子。我想要发生的是,对于每个订购的商品,在它们正下方插入一个额外的行。
注意:每个销售订单可以有 1 个或多个已订购商品。
这是订购商品的表格:
这是我想要达到的表格结果:
请告诉我。实现此目的的正确 mysql 查询是什么。感谢您的帮助
【问题讨论】:
可能使用before trigger
。
嗨拉胡尔,感谢您的快速回复。对于这种情况,您是否有一个基本的查询?
我认为最好的办法是,从您的应用程序端而不是在 DB 端进行管理,在 order_id = 16 时的所需屏幕中,您只想插入一行进行装运。你怎么知道下一个插入 order_id 与前一个相同?因此,请尝试从应用代码管理它,然后相应地触发插入。
您好 Rahul,该数据库设计基于 wordpress 的 woocommerce 插件。某个销售订单 id = 16 可以有多个项目。这就是 woocommerce 构建数据库的方式。谢谢
【参考方案1】:
您必须使用触发器或编写包含插入表中的 2 行的 SQL 事务。
SET AUTOCOMMIT=0
//INSERT QUERY FOR ITEM
mysql_query("INSERT INTO table_name (order_item_name, order_item_type, order_id) VALUES ('".$name."', '".$type."', ".$order_id.")");
//INSERT QUERY FOR FREE SHIPPING
mysql_query("INSERT INTO table_name (order_item_name, order_item_type, order_id) VALUES ('Free Shipping', 'shipping', ".$order_id.")");
SET AUTOCOMMIT=1
【讨论】:
嗨,保罗,谢谢你的想法。你觉得第二个截图有可能实现吗? 是的,当然。SET AUTOCOMMIT=0 //INSERT QUERY FOR ITEM //INSERT QUERY FOR FREE SHIPPING SET AUTOCOMMIT=1
我明白了。我会试试你说的。我真的没有想到一个基本的方法来做到这一点。嗯..你有一个代码sn-p我怎么能基本上做到这一点先生?
我假设 order_item_id 为自动增量,order_id 为整数 SET AUTOCOMMIT=0 mysql_query("INSERT INTO table_name (order_item_name, order_item_type, order_id) VALUES ('".$name."', '".$type."', ".$order_id.")"); mysql_query("INSERT INTO table_name (order_item_name, order_item_type, order_id) VALUES ('Free Shipping', 'shipping', ".$order_id.")"); SET AUTOCOMMIT=1
以上是关于MySQL - 每个 ID 的 INSERT 或 JOIN 表行的主要内容,如果未能解决你的问题,请参考以下文章
MYSQL LAST_INSERT_ID 未按预期工作。我该如何解决?