2010-07-29 4 views
0

J'ai deux tables distinctes utilisées pour les catégories.Comment joindre des tables facilement Microsoft SQL Server?

On est Categories(ID, Title, Description), et l'autre est SubCategories(ID, UpperID, Title, Description)

Je veux insérer les enregistrements de catégories aux sous-catégories avec upperID = 0. J'ai regardé SQL SELECT INTO mais je ne sais pas comment l'utiliser pour les tables existantes.

+0

Voulez-vous conserver les ID initiaux des catégories? et si oui, ne sont-ils pas présents dans les sous-catégories? –

+0

Je veux joindre ces tables car je veux pouvoir définir une catégorie ou une sous-catégorie pour un autre enregistrement (dans le cas d'une usine) dans la base de données –

Répondre

6
Insert Into dbo.SubCategories (UpperId, Title, Description) 

Select 0, Title, Description 
From dbo.Categories 

Cela suppose que la colonne ID dans les deux tableaux est une colonne d'identité et que l'ID dans les catégories ne devraient pas être transférés à la table sous-catégories

+2

en ajoutant à la réponse, si vous voulez aussi passer l'ID (* il n'est pas en conflit avec les clés existantes *) utilise le 'SET IDENTITY_INSERT SubCategories ON' –

+0

J'allais ajouter cela mais comme je ne suis pas sûr à 100% de ce que l'OP veut, j'ai décidé de le laisser de côté pour éviter toute confusion. Encore un bon point à faire cependant. – codingbadger

+0

Utilisé: INSERT INTO dbo.Categories (UpperId, Title, Description) SELECT UpperID, Titre, Description FROM dbo.SubCategories; Parce que les sous-catégories avaient des identifiants de catégories alors maintenant je n'ai pas besoin de changer de catID :) –

0
INSERT INTO SubCategories(ID, UpperID, Title, Description) 

SELECT ID, 0, Title, Description FROM Categories 

supposant que Id est pas de champ d'identité.

+1

-, cela vous donnera une erreur avec mssql ...! jetez un oeil à la réponse de Barry (qui a la syntaxe correcte) –

+0

NON ... si vous parlez de l'identité, alors j'ai expliqué à ce sujet. – Azhar

+1

non ... ce n'est pas une question d'identité ... c'est juste votre syntaxe invalide: 'INSERT INTO TABLE (Colonne1, Colonne2, ...) VALUES (SubSelect)' n'est pas valide. il doit indiquer 'INSERT INTO TABLE (Colonne1, Colonne2, ...) SousSelection' –

Questions connexes