Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.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 如何简化我的SQL请求?_Mysql_Sql_Refactoring - Fatal编程技术网

Mysql 如何简化我的SQL请求?

Mysql 如何简化我的SQL请求?,mysql,sql,refactoring,Mysql,Sql,Refactoring,我这里有两张桌子。一个是项目,另一个是零件 项目具有零件id,零件具有项目id 当用户从itemdail视图中按下提交按钮时,数据将发送到服务器并插入到这两个表中 下面是我的代码的工作原理: 首先插入项目表,并获取新项目数据的id 使用此项目id和其他零件数据插入到零件表 使用新的零件id 但是我可以在一个请求中编写这三个SQL请求吗 以下是我的表格结构: 项目 零件 看看你正在使用的逻辑,你做的是正确的 因为它们是两个独立的表,所以需要在SQL中执行两个独立的insert语句。当然,您可以使用

我这里有两张桌子。一个是
项目
,另一个是
零件

项目
具有
零件id
零件
具有
项目id

当用户从
itemdail
视图中按下提交按钮时,数据将发送到服务器并插入到这两个表中

下面是我的代码的工作原理:

  • 首先插入
    项目
    表,并获取新
    项目
    数据的
    id
  • 使用此
    项目id
    和其他
    零件
    数据插入到
    零件
  • 使用新的
    零件id
  • 但是我可以在一个请求中编写这三个SQL请求吗

    以下是我的表格结构:

    项目

    零件


    看看你正在使用的逻辑,你做的是正确的

    因为它们是两个独立的表,所以需要在SQL中执行两个独立的insert语句。当然,您可以使用存储过程,这样您只需要调用代码中的一项,SP就会执行两次插入

    这里的一个问题是您使用的是什么代码?如果您使用的是实体框架之类的东西,并且您的关系是在元素之间定义的,例如

    项目

    -字段1

    -零件(FK)
    列表


    那会有用的,但是看看你标记的东西,我猜你没有使用ASP语言??如果让我知道,我可能会为您提供更好的解决方案。

    您不应该有两个这样相互指向的表,其中只有一个表应该有外键,而不是两个都有

    那么你要找的是:


    事务确保执行所有查询,或者如果某个地方出现错误,所有更改都将被还原。

    我想一个项目可以有多个部分?在这种情况下,从
    Items
    表中删除
    部分id
    。您可以获得多个
    零件id
    ,因此无法像那样保存它。因为你已经从零件表中获得了尊敬,你可以这样做链接。这样你就可以摆脱步骤3。谢谢你的评论。项目与零件的关系为1:1。零件必须有零件id,但零件不必有零件id。@Ivar所说的即使在您描述的情况下仍然有效。你确定他们有1:1的关系吗?一个零件不能用于多个项目吗?您在谈论什么样的零件/项目?非常感谢您的评论。我没有使用sqls来生成此代码。我用sailsjs水线和knexjs来做这个。所以sailsjs迁移的表包含了这些表。sailsJS水线通过模型建立这些外键关系。我为我糟糕的英语道歉。谢谢你的评论。我正在使用javascript。nodejs和sailjs框架。实体框架是waterline和knex。不知道这个框架,我快速查找了一下,发现它与EntityFramework的功能非常相似。显示了表结构中类似列表的对象的一些示例。
    Field | Type | Null | Key | Default | Extra |
    | id | int(10) unsigned | NO | PRI | NULL | auto_increment |
    | name | varchar(255) | YES | | NULL | |
    | price | int(11) | YES | | NULL | |
    | part_id | int(10) unsigned | YES | | NULL | |
    | type | varchar(255) | YES | | NULL | |
    
    Field | Type | Null | Key | Default | Extra |
    | id | int(10) unsigned | NO | PRI | NULL | auto_increment |
    | item_id | int(10) unsigned | NO | | NULL | |
    | name | varchar(255) | NO | | NULL | |
    | number | varchar(255) | YES | | NULL | |