SQL:根据表中的ID删除表中的项,该ID也出现在另一个表中

时间:2018-04-22 20:18:03

标签: java sql derby

长话短说,我有一个优惠券系统项目。 在其中我有公司,优惠券和客户。 所有数据都保存在SQL DB中,基于apache derby。 例如: 公司表上有公司。有id,名字,密码,电子邮件 优惠券表上存在优惠券。有id,标题,价格等。 只有公司可以创建优惠券,它的作用,不仅是在上面提到的优惠券表上创建的,它还填充了第二个“索引”表,加入公司和优惠券= company_coupon。有company_id,coupon_id

现在项目中的其他所有内容都运行得很漂亮,我的老师会检查表格,所有内容都配置正确。

我接下来想做什么,似乎无法弄清楚is的语法: 当我删除公司时,我还想从优惠券表中删除该公司创建的每张优惠券。我这样做是通过在company_coupon表中搜索company_id匹配,并根据与它们配对的coupon_id进行删除。

我正在尝试这个声明:

String sql = "DELETE FROM coupon INNER JOIN company_coupon ON id = company_coupon.coupon_id WHERE company_coupon.company_id = "

sql += companyObject.getId();

< - 方法正在获取一个对象,我可以访问它的id,但我尝试编写一个特定的公司ID,但仍然...

同样的错误会不断变回:

  

java.sql.SQLSyntaxErrorException:语法错误:遇到“INNER”   第1行,第8栏。

我在这里和其他地方在线搜索,建议在DELETE之后添加一个“别名”。得到了同样的错误,指着那个额外的词: "DELETE c FROM coupon INNER JOIN company_coupon ON id = company_coupon.coupon_id WHERE company_coupon.company_id = " ---->>

  

java.sql.SQLSyntaxErrorException:语法错误:遇到“c”at   第1行,第8栏。

任何想法? :(

2 个答案:

答案 0 :(得分:0)

您可能需要两个删除语句:

delete from company where id=1;
delete from company_coupon where id_company=1;

如果您的数据库支持外键上的级联删除,则可能只需要一个删除语句。

看看:http://sqlfiddle.com/#!7/86102/6(点击"运行SQL" 并向下滚动到结果的底部,尝试自己更改sql)

答案 1 :(得分:0)

已解决:

function openmodal(modalarray) {
  return Alert.alert(
    "Alert Title",
    "My Alert Msg",
    [
      modalarray.forEach(element => {
        "{text: element, onPress: () => console.log('button press)},";
      })
    ],
    { cancelable: false }
  );
}