Votre question n'a pas vraiment de sens. Il semble que vous voulez insérer dans une table (Products
) et l'un des champs est également dans une autre table (User.username
). D'où vient le reste des données pour Products
? Tu ne peux pas insérer le nom d'utilisateur directement?
Insert into products (name, price, username) values (?, ?, ?)
Utilisez le mécanisme que vous souhaitez transmettre dans les données à cette instruction SQL.
Si, cependant, vous avez en fait une troisième table, dire, « Prod_for_sale
» et que vous voulez insérer un tas de données dans cette table, à la fois Users
et Products
, vous pouvez faire quelque chose comme ça (comme suggéré par Rick J, mais cet exemple a deux tables):
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 = ?
vous pouvez ensuite copier toutes les données que vous voulez à partir des tables en question dans la table de destination. Un conseil cependant: vous devriez utiliser un identifiant d'utilisateur au lieu d'un nom d'utilisateur pour identifier les données de l'utilisateur dans la base de données. Cela vous permettra de modifier votre politique de nom d'utilisateur plus tard ou de permettre la mise à jour des noms d'utilisateur, etc. Généralement, essayez de faire tous vos numéros d'identifiants et vous vous épargnerez des soucis dans le futur.
J'ai essayé les deux sens et j'ai eu le même problème « doit déclarer la variable scalaire @ProductName » qui est déjà déclaré plus je n'obtiens ce message lorsque j'insère seulement à la table d'information Produits sans rien sélectionner à partir Table des utilisateurs – KmOj86
Essayez-vous d'exécuter une instruction sql directement, ou utilisez-vous un contrôle asp.net ou autre chose? Je suppose que ce dernier puisque vous êtes mentinoing vs webdev. De toute façon, montrez-nous le code afin que nous puissions voir ce qui échoue. – ahains