Ваш вопрос не имеет смысла. Похоже, вы хотите вставить в одну таблицу (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 = ?
Затем вы можете копировать любые данные, которые вы хотите из таблиц в вопросе в таблицу назначения.
Одно из рекомендаций: вы должны использовать идентификатор пользователя вместо имени пользователя, чтобы идентифицировать данные пользователя в базе данных. Это позволит вам позже изменить политику имени пользователя или разрешить обновление имен пользователей и т. Д. Вообще-то старайтесь делать все ваши идентификационные номера, и вы сэкономите себя в будущем.
Я попробовал оба пути, и я была такая же проблема «должен объявить скалярную переменную @ProductName» , который уже объявлен плюс я не получаю это сообщение, когда я только вставить данные в таблицу продуктов, не выбирая ничего из Таблица пользователей – KmOj86
Вы пытаетесь запустить SQL-запрос напрямую или используете какой-либо элемент управления asp.net или что-то в этом роде? Я принимаю это последнее, так как вы перебираете vs webdev. В любом случае, покажите нам код, чтобы мы могли видеть, что происходит. – ahains