2010-03-12 8 views
1

J'ai le tableau suivant dans une base de données d'accèsMS-Access: SQL pour mettre à jour une colonne dans une table

id VisitNo  Weight  
1 1   100 
1 2   95 
1 3   96 
1 4   94 
1 5   93 

maintenant la ligne 2 et 4 sont supprimés. Donc, j'ai ...

id VisitNo  Weight  
1 1   100 
1 3   96 
1 5   93 

Mais ce que j'ai besoin est ...

id VisitNo  Weight  
1 1   100 
1 2   96 
1 3   93 

Quelle est la requête SQL que je dois accomplir ce qui précède?

grâce

+0

Est-VisitNo un NuméroAuto? –

+4

pourquoi? Que gagnez-vous en re-numérotant votre colonne "VisitNo", vraiment? –

Répondre

1

Vous ne devriez pas vraiment « réorganiser » une clé dans la base de données. Si vous utilisez la base de données d'une manière relationnelle, vous pouvez référencer VisitNo d'une autre table comme un moyen de lier les informations de poids à d'autres informations que vous détenez à partir de la visite. Ce lien s'appelle une relation et l'ID est appelée clé primaire, qui ne devrait jamais changer pour une ligne de votre table car elle casserait n'importe quelle référence dans d'autres tables (ces références sont appelées des clés étrangères).

Bien qu'il semble agréable et "rangé" d'avoir des pauses dans votre séquence VisitNo, ce n'est pas vraiment le bon processus à suivre lorsque vous supprimez des enregistrements. Cependant, cette leçon ne vous dérange pas, voici comment vous pourriez changer le VisitNo, en supposant que ce ne soit pas une clé du tout, mais une donnée utilisateur (par exemple, la première fois que j'ai visité le gymnase, la deuxième fois que je visite la salle de gym et la troisième fois que je visite la salle de gym)

CREATE TABLE #RowNumber (
    RowNumber int IDENTITY (1, 1), 
    id INT, 
    Weight INT ) 

INSERT #RowNumber (emp_id) 
SELECT id, Weight 
FROM tblMyTable 
WHERE id = 1 
ORDER BY VisitNo 

SELECT * FROM #RowNumber 

DROP TABLE #RowNumber 

Si vous exécutez cette requête (remplacez tblMyTable avec le nom de votre table), vous verrez que la colonne RowNumber est essentiellement la re -Nombre VisitNo. Vous pouvez utiliser ces données pour revenir à votre table ... bien qu'il y ait un léger problème avec votre structure de table à cet égard. Vous avez besoin d'une clé primaire sur la table pour vous donner une belle poignée unique à chaque ligne:

recordid id VisitNo  Weight  
1   1 1   100 
2   1 2   95 
3   1 3   96 
4   1 4   94 
5   1 5   93 

Sans cela, vous aurez du mal à mettre à jour la nouvelle VisitNo retour sur la table, qui ressemblera à ceci:

recordid id VisitNo  Weight  
1   1 1   100 
3   1 3   96 
5   1 5   93 

Et après avoir modifié, il ressemblerait à ceci:

recordid id VisitNo  Weight  
1   1 1   100 
3   1 2   96 
5   1 3   93 
+0

ok sohnee, l'essayer .... – tecno

+0

n'a pas fonctionné, a remplacé la table appropriée et les noms de colonnes, je vais devoir repenser mon approche, merci pour la réponse. – tecno

Questions connexes