2010-05-31 6 views
1

ModifierComment faire pour insérer une ligne d'une table à une autre table (ce qui a moins de colonnes)?

Ok J'ai résolu tous mes problèmes sauf un. Est-il possible d'avoir également une insertion de valeur codée en dur? Comme je l'ai dit, j'essaie d'insérer une ligne (certaines de ses colonnes) dans une autre table qui contient environ 80% des mêmes colonnes, mais les colonnes restantes durent des colonnes non nulles et ont besoin de valeur pour être insérées dans celles-ci.

Je me demande si je peux envoyer une valeur codée en dur ou devrais-je simplement les rendre NULL?

Salut

J'essaie de trouver des lignes qui ne sont pas dans une table et les insérer dans une autre. Le tableau que j'essaie d'insérer contient moins de colonnes que l'autre.

Ces colonnes sont nulles mais il serait cool si je pouvais coder une valeur avant de faire l'insertion.

Mais j'ai tellement de mal à essayer de l'insérer.

J'ai quelque chose comme ça

SELECT p.ProductId, p.ProductName 
INTO SomeTable 
FROM Product as p 
WHERE p.ProductName != 'iPad' 

J'obtiendriez une erreur comme celui-ci si

Msg 4104, niveau 16, état 1, ligne 1 L'identifiant plusieurs parties « p .ProductId "ne peut pas être lié.

Je ne suis pas sûr de ce que je fais mal. J'ai copié et collé les noms, donc je ne pense pas que ce soit une faute d'orthographe. J'utilise ms sql 2005 express.

Modifier

J'ai oublié de mettre à jour mon article où le nom d'alias pourquoi je recevais cette erreur. Maintenant, je reçois une nouvelle erreur

Il existe déjà un objet nommé 'SomeTable' dans la base de données.

Ma clause where.

SELECT p.ProductId, p.ProductName 
INTO SomeTable 
FROM Product as p 
WHERE NOT EXISTS (SELECT * FROM SomeTable WHERE p.ProductId = SomeTable.ProductId) 

Répondre

5

La syntaxe doit être quelque chose comme:

INSERT INTO table (f1, f2) 
SELECT a, b 
FROM table2 
WHERE somefield = 'some_value' 
Questions connexes