如何从多个表插入一个?

时间:2009-05-06 09:38:22

标签: asp.net sql vb.net visual-studio

我有一个用户表(用户名,密码等)和另一个用于产品的表(产品名称,价格,数量,用户名等等)

当用户将其用于销售时,我希望将第一个表中的用户名(以及产品信息的其余部分)插入到产品表中。

我该怎么做?

我正在使用visual web developer 2008 express

3 个答案:

答案 0 :(得分:1)

INSERT INTO product_information (username,product_name, ...., Date)
SELECT username, 'Book',....., Date
FROM users;

沿着那条线的东西

答案 1 :(得分:0)

如果你有Linq(.NET 3.5 / C#3.0):

var users = from u in userTable
            from p in productTable
            where p.username = u.username
            select new productDetails()
            {
              username = u.username,
              price = p.price
            }

然后newtable.insertAllOnSubmit(用户);

如果是直接sql

insert into newtable
select table1.value1, table2.value1
from table1, table2
where table1.username = table2.username

编辑:

澄清... value1和value2是相应案例的列。您将要插入的每个参数都有一个。你的新表变成了table1

答案 2 :(得分:0)

你的问题没有意义。听起来你想插入一个表(Products),其中一个字段也在另一个表(User.username)中。 Products的其余数据来自哪里?你不能直接插入用户名吗?

Insert into products (name, price, username) values (?, ?, ?)

使用您希望将数据传递给该SQL语句的任何机制。

但是,如果您确实有第三个表格,比如“Prod_for_sale”,并且您希望从UsersProducts向该表中插入一堆数据,你可以做这样的事情(正如Rick J所建议,但这个例子有两个表):

insert into products for sale (username, user_country, product_name, product_price)
select u.username, u.country, p.name, p.price
from products p, users u
where p.id = ?
  and u.username = ?

然后,您可以将所需的任何数据从相关表中复制到目标表中。

建议:您应该使用用户ID而不是用户名来识别数据库中的用户数据。这将允许您稍后更改您的用户名政策或允许更新用户名等。通常会尝试制作所有标识号,以便将来为您节省麻烦。