Как вставить из нескольких таблиц в одну? - PullRequest
0 голосов
/ 06 мая 2009

У меня есть таблица для пользователей (имя пользователя, пароль и т. Д.) И еще одна для продуктов (название продукта, цена, количество, имя пользователя ... и т. Д.)

Я хочу, чтобы имя пользователя из первой таблицы было вставлено (вместе с остальной информацией о продукте) в таблицу продуктов, когда пользователь выставит его на продажу.

Как я могу это сделать?

Я использую Visual Web Developer 2008 Express

Ответы [ 3 ]

1 голос
/ 06 мая 2009
INSERT INTO product_information (username,product_name, ...., Date)
SELECT username, 'Book',....., Date
FROM users;

что-то в этом направлении

0 голосов
/ 06 мая 2009

Ваш вопрос не совсем имеет смысла. Похоже, вы хотите вставить в одну таблицу (Products), а одно из полей также находится в другой таблице (User.username). Откуда берутся остальные данные для Products? Вы не можете просто вставить имя пользователя напрямую?

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

Используйте любой механизм, который вы хотите передать в данные этому оператору SQL.

Если, однако, у вас на самом деле есть третья таблица, скажем, 'Prod_for_sale', и вы хотите вставить в эту таблицу набор данных как из Users, так и Products, вы можете сделать что-то вроде этого (как предложено Риком Дж, но в этом примере две таблицы):

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 = ?

Затем вы можете скопировать любые данные из этих таблиц в таблицу назначения.

Однако совет: вы должны использовать идентификатор пользователя вместо имени пользователя для идентификации данных пользователя в базе данных. Это позволит вам позже изменить политику имен пользователей или обновить имена пользователей и т. Д. Обычно старайтесь указывать все номера идентификаторов, и вы избавите себя от хлопот в будущем.

0 голосов
/ 06 мая 2009

Если у вас есть 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

Edit:

, чтобы уточнить ... value1 и value2 являются столбцами из соответствующих случаев. У вас будет один для каждого параметра, который вы хотите вставить. И ваш newtable становится table1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...