Completer une table

Mammouth du PHP | 693 Messages

03 mai 2007, 17:20

Bonjour, j'ai une table avec dedans des noms de personnes et une liste généré grace à du PHP de nom.

J'aimerai insérer dans la table les noms qui n'existe pas déjà.

Donc pour l'instant, je vois comme solution de créer une table temporaire dans laquelle je mets la liste puis avec une jointure sur la table, je récupère les valeur qui n'existe pas que j'insere dans la table.

Cependant, j'ai plusieurs questions. Comment fait on une table temporaire ? Et est ce que l'on peut el faire avec MySQL ?

Ensuite, est ce possible en SQL d'insérer dans la table le résultat d'une requete ?

Enfin, est ce que cette solution est mieux qu'un traitement PHP avec rappatriement de la table, indexation de liste puis suppresion des index présent dans le résultat de la requete ?

ViPHP
ViPHP | 5924 Messages

03 mai 2007, 18:11

Ca me parait bizarre ton problème, je trouve une table temporaire assez bourrin, tu ne peux pas expliquer exactement ce que tu veux faire ? Il y a peut être une autre solution.

Mammouth du PHP | 693 Messages

03 mai 2007, 19:03

exemple, j'ai une liste avec par exemple dupont durant et martin et dans ma table j'ai dupont et durant. Je ne veux pas insérer la liste telle quelle parce que sinon je vais avoir des doublet (et en plus c'est pas possible car j'ai mis une clé primaire)

Donc j'aimerai insérer que martin. Donc, est ce que un traitement SQL est adapté (je ne peux pas faire de procédure) ou alors faut il que je me rabatte sur PHP.

Si ca a une influance, ma table est prévu pour avec quelques milliers d'entrée et ma liste une centaine.

ViPHP
ViPHP | 5924 Messages

03 mai 2007, 20:09

Crée des clés PRIMARY ou UNIQUE sur chaque colonne qui doit rester unique, et insère tes données avec INSERT IGNORE ... , ca ignorera tous les enregistrements qui font doublon. C'est mieux de faire comme ca puisque ca économise au serveur pas mal d'opérations.
Pour plus, d'infos : http://dev.mysql.com/doc/refman/5.0/fr/insert.html

Mammouth du PHP | 693 Messages

04 mai 2007, 19:36

Merci beaucoup.

Sinon, comment faire si on veut que ca soit la réunion de deux champs qui doit être unique (en gros, comment mettre une clefs sur deux champs) ?

ViPHP
ViPHP | 5924 Messages

04 mai 2007, 20:14

Essaye ca :

Code : Tout sélectionner

ALTER TABLE nom_table ADD UNIQUE nom_cle (colonne1, colonne2, colonne3, ...);