2013-10-15 53 views
0

我有3个表,名为tblProducten,tblCategorie和tblProductCategorie。从其他2个子查询中的表中插入数据

tblProductenen有:

  • PK_producten_ID(主键,AI)
  • ProductNaam(产品名,VARCHAR)

这台充满了智能手机或普通电话数据(例如“ iPhone4“,”诺基亚3310“)

tblCategorie has:

  • PK_Categorie_ID(主键,AI)
  • Naam_Categorie(Categorie名,VARCHAR)

这台充满类别的(例如 “智能手机”, “手机”, “额外”)

tblProductCategorie有:

  • PK_Product_Categorie_ID(主键,AI)
  • ProductNaam(Categorie名,VARCHAR)
  • tblProductenen_PK_Producten_ID
  • tblCategorie_PK_Categorie_ID

现在我想进入名为 “iPhone4的” 产品与产品的 “智能手机” 到CategorieProduct TABEL的范畴。

我想是这样的:

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

不过是不成功的。

回答

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"; 

你真的想插入表中什么名字?产品名称,类别名称还是两者?

+0

我有例如配发的手机和类别的手机的配发,而且由于这是一个多对多关系,我需要创建另一个表来将主键和代码结合起来,进行小的调整,它就可以工作了!谢谢分配! –

1

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

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

和第二你不要把所有ARGS在列。

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")  

好运;)

+0

看起来也不错,但是,其他人回答更快,也做了窍门:/,谢谢寿! –

相关问题