【问题标题】:Insert data in table from 2 other tables with subquery使用子查询在其他 2 个表中的表中插入数据
【发布时间】:2013-10-15 18:55:46
【问题描述】:

我有 3 个表,分别命名为 tblProducten、tblCategorie 和 tblProductCategorie。

tblProductenen 有:

  • PK_producten_ID(主键,A.I.)
  • ProductNaam(产品名称,VARCHAR)

此表填写智能手机或普通手机数据(例如“iPhone4”、“Nokia 3310”)

tblCategorie 有:

  • PK_Categorie_ID(主键,A.I.)
  • Naam_Categorie(类别名称,VARCHAR)

此表填充了类别(例如“智能手机”、“电话”、“额外”)

tblProductCategorie 有:

  • PK_Product_Categorie_ID(主键,A.I.)
  • ProductNaam(类别名称,VARCHAR)
  • tblProductenen_PK_Producten_ID
  • tblCategorie_PK_Categorie_ID

现在我想在 CategorieProduct 表中输入名为“iPhone4”的产品和产品类别“smartPhone”。

我尝试过这样的事情:

INSERT INTO tblProductCategorie (
  SELECT PK_producten_ID FROM tblProducten
  WHERE ProductNaam = "iPhone4",
    SELECT PK_Categorie_ID FROM tblCategorie
    WHERE Naam_Categorie = "smartphone"
)

但是没有成功。

【问题讨论】:

    标签: sql database subquery


    【解决方案1】:
    INSERT INTO tblProductCategorie(ProductNaam, tblProductenen_PK_Producten_ID, tblCategorie_PK_Categorie_ID)
    SELECT distinct ###, PK_producten_ID, PK_Categorie_ID
    FROM tblProducten, tblCategorie 
    WHERE ProductNaam = "iPhone4" AND Naam_Categorie = "smartphone";
    

    你真的想在表格中插入什么名字?产品名称、类别名称还是两者都有?

    【讨论】:

    • 我有例如电话分配和电话类别分配,由于这是多对多关系,我需要创建另一个表来组合主键,并与你的代码,经过小的调整,它工作了!谢谢分配!
    【解决方案2】:

    插入值的方式有两个主要问题,你没有指定列列表

    insert into tablename (column1, column2, etc)values ( 1, 2)
    

    其次,您不会将所有参数都放在列中。

    INSERT INTO tblProductCategorie( PK_Product_Categorie_ID, ProductNaam, tblProductenen_PK_Producten_ID, tblCategorie_PK_Categorie_ID) (SELECT PK_producten_ID FROM tblProducten WHERE ProductNaam = "iPhone4", SELECT PK_Categorie_ID FROM tblCategorie WHERE Naam_Categorie = "smartphone")
    

    应该需要类似:

    INSERT INTO tblProductCategorie( PK_Product_Categorie_ID, ProductNaam, tblProductenen_PK_Producten_ID, tblCategorie_PK_Categorie_ID)( "iPhone4", SELECT PK_producten_ID FROM tblProducten WHERE ProductNaam = "iPhone4", SELECT PK_Categorie_ID FROM tblCategorie WHERE Naam_Categorie = "smartphone")    
    

    祝你好运;)

    【讨论】:

    • 看起来也不错,但是其他人的回答更快,也成功了:/,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多