2009-05-06 1 views
0

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

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

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

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

+0

Я попробовал оба пути, и я была такая же проблема «должен объявить скалярную переменную @ProductName» , который уже объявлен плюс я не получаю это сообщение, когда я только вставить данные в таблицу продуктов, не выбирая ничего из Таблица пользователей – KmOj86

+0

Вы пытаетесь запустить SQL-запрос напрямую или используете какой-либо элемент управления asp.net или что-то в этом роде? Я принимаю это последнее, так как вы перебираете vs webdev. В любом случае, покажите нам код, чтобы мы могли видеть, что происходит. – ahains

ответ

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

что-то вдоль этой линии

+0

Это точно не отображает из нескольких рассказов? «Книга» не должна находиться в таблице пользователей ...но и вопрос открытия не на 100% ясен ... – PatTech

+0

извините, но я не знаю, что неясно в моем вопросе – KmOj86

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 
      } 

затем Новая_таблица .insertAllOnSubmit (пользователей);

если в прямой SQL

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

Edit:

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

+0

что означают значения u по значению1 и значению2? BTW Я хочу вставить из таблицы1 и таблицы2 в таблицу1 нет другой таблицы – KmOj86

+0

Добавлен пояснения – PatTech

0

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

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

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

Если, однако, вы на самом деле имеют третью таблицу, скажем, «Prod_for_sale», и вы хотите, чтобы вставить кучу данных в эту таблицу, как из Users и Products, вы можете сделать что-то вроде этого (как это было предложено 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 = ? 

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

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

Смежные вопросы