|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2009 Messages : 146 ![]() |
Bonjour,
J'ai une table contenant plus de 2000 données. Chaque données (ou ligne, j'ai oublié le nom... -_-) contiennent un ID, logiquement de 0 à X. Sachant que je supprime parfois une donnée ou deux, j'aimerais savoir comment faire pour détecter si un ID a sauté. (Exmple, il y a 0, 1, 2 puis 4, sans 3) Et une seconde question, j'aimerais savoir ce qui est le mieux : avoir une base de donnée contenant beaucoup de tables et des données bien triées, ou une base de donnée contenant qu'une seule table et des données mal triées, en rapport optimisation/organisation. Merci de vos réponses ! |
|
|
00
|
|
|
#2 | |||||
![]() ![]() David S.Etudiant en alternance Inscription : août 2010 Messages : 1 167 ![]() |
Citation:
Citation:
Citation:
Citation:
Citation:
__________________
![]() ![]() ![]() David55 |
|||||
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2009 Messages : 146 ![]() |
Salut, j'ai créé un script pour une application, et le système fait que je ne dois pas avoir de saut d'ID pour que cela fonctionne correctement...
Merci |
|
|
00
|
|
|
#4 | |||
![]() ![]() David S.Etudiant en alternance Inscription : août 2010 Messages : 1 167 ![]() |
Citation:
Citation:
Citation:
__________________
![]() ![]() ![]() David55 |
|||
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2009 Messages : 146 ![]() |
Merci, mais moi je ne peux pas utiliser l'import, car je voudrais le faire directement dans un script. (donc un code SQL).
|
|
|
00
|
|
|
#6 | |||||
![]() ![]() David S.Etudiant en alternance Inscription : août 2010 Messages : 1 167 ![]() |
Citation:
Citation:
Citation:
Il suffit de récupérer tous les nombres de 1 jusqu'à ton id MAX et de récupérer tous les id qui ne sont pas dans ta table! exemple: Code :
__________________
![]() ![]() ![]() David55 |
|||||
|
|
10
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2009 Messages : 146 ![]() |
Merci beaucoup!
(Je vais faire des grand espaces, pour t'aider à faire tes quotes )Le seul problème est... que je n'ai pas vraiment compris comment marche ton script. Je sais juste faire des SELECT, UPDATE et autre fonctions basiques |
|
|
00
|
|
|
#8 | |||||||
![]() ![]() David S.Etudiant en alternance Inscription : août 2010 Messages : 1 167 ![]() |
Citation:
Citation:
Citation:
Sinon tu n'a pas besoin d'autre chose qu'un simple select! Quel partie ne comprend tu pas? Code :
Ceci permet de ne pas supprimer les données si la jointure ne fonctionne pas mais plutot de placer les autres éléments à null d'où ma condition dans le where Code :
Ta jointure Ta condition qui va t'enlever les id existant puisque le champ temoin est un champ non nulle de ta table
__________________
![]() ![]() ![]() David55 |
|||||||
|
|
10
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2009 Messages : 146 ![]() |
Ok, et à quoi sert la lettre "n" ?
|
|
|
00
|
|
|
#10 | |||
![]() ![]() David S.Etudiant en alternance Inscription : août 2010 Messages : 1 167 ![]() |
Citation:
Apres tu peux l'appeler comme tu veux c'est ta requête En gros cette requête resemblera à : Code :
__________________
![]() ![]() ![]() David55 |
|||
|
|
10
|
|
|
#11 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2009 Messages : 146 ![]() |
Ah, donc il faut que je fasse une boucle qui répète la ligne
"SELECT x UNION ALL" id_max fois ? |
|
|
00
|
|
|
#12 | |||
![]() ![]() David S.Etudiant en alternance Inscription : août 2010 Messages : 1 167 ![]() |
Citation:
Ca donnerait ca (attention c'est du pseudo code il y a des fautes): Code :
Ahhhh bidouillage quand tu nous tiens!
__________________
![]() ![]() ![]() David55 |
|||
|
|
10
|
|
|
#13 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2009 Messages : 146 ![]() |
Merci beaucoup, je pourrais ensuite faire un "UPDATE table SET ID = ID-1 WHERE ID > id_sauté"
? |
|
|
00
|
|
|
#14 | |
![]() ![]() David S.Etudiant en alternance Inscription : août 2010 Messages : 1 167 ![]() |
Citation:
Je pensais que tu voulais stocké ces id pour pouvoir insérer à cette endroit sans problème!!!
__________________
![]() ![]() ![]() David55 |
|
|
|
00
|
|
|
#15 |
![]() ![]() |
Ne pas jouer avec les identifiants !
L'identifiant est une clé primaire d'une table issue d'une entité du modèle conceptuel de données et sert de clé étrangère dans les autres tables associées à la première. Si tu modifies un identifiant, tu perds la cohérence des données dans les autres tables qui référencent cet identifiant. Et comme l'identifiant est une clé purement interne au SGBD et que l'utilisateur de l'application n'a pas à connaître, on s'en fout que ce soit 1, 2, 3, 4 ou 221, 354, 1852, 4569 ! Le SGBD s'y retrouvera toujours tant que l'identifiant reste invariable. Explique davantage pourquoi tu veux faire ça et on te dira comment faire autrement.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
10
|
|
|
#16 |
|
Membre Expert
![]() Yannick Ingénieur Etudes & Developpements Inscription : février 2006 Messages : 1 125 ![]() |
Ce genre de demande (rupture de numerotation) a été traité dans un sujet plus ancien : ici , peut etre que cela vous permettra d'arriver a vos fins ...
Bon courage
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac) |
|
|
00
|
|
|
#17 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2009 Messages : 146 ![]() |
Ah, super! Merci Yanika !
La solution était assez simple. Merci à tous PS. J'avais aussi une petite question, je ne pense pas créer une topic pour ça : Est-il possible de créer une table avec 100 à 200 colonnes ? Si oui, est-ce que les performances se dégraderons beaucoup plus qu'une table à 20 ou 30 colonnes ? Merci |
|
|
00
|
|
|
#18 |
![]() ![]() |
100 à 200 colonnes pour une table, ça fait beaucoup et c'est généralement la marque d'un mauvais modèle de données.
Quelle entité peut avoir 200 attributs différents ? Encore une fois, explique davantage ce que tu veux faire, pourquoi tu veux 100 colonnes à ta table, et on te dira comment faire mieux.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#19 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2009 Messages : 146 ![]() |
J'utilise ma table pour un jeu, et toutes ces colonnes sont l'inventaire du joueur.
Et sachant que il y a pas mal d'objets et de place dans son inventaire, il me faut pas mal de colonnes. Pour les ID non-unique, ce n'est pas pour des joueurs, mais pour un autre système qui n'a pas besoin d'avoir d'ID unique, simplement pour faire plus joli d'avoir des ID croissants. |
|
|
00
|
|
|
#20 |
![]() ![]() David S.Etudiant en alternance Inscription : août 2010 Messages : 1 167 ![]() |
Tu peux placer les objets dans une autres table. Tu dois tres certainement pouvoir diviser ta table en plusieurs! N'hésite pas à avoir plusieurs table et jouer avec l'héritage!
__________________
![]() ![]() ![]() David55 |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com