Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1362 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  plusieurs INSERT voire meme des milliers

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

plusieurs INSERT voire meme des milliers

n°1716473
redah75
Posté le 11-04-2008 à 18:30:32  profilanswer
 

Bonjour tout le monde,
 
Je suis entrain de faire un outil de mailing et je bloque sur un ptit truc que j'arrive pas a surmonter...!!! votre conseil est vrmt le bienvenu :)
 
avt d'envoyer un mail, je fais une recherche pour selectionner les destinataires, et c'est la ou le probleme ce pose, ces destinataire je les stock ds une table qui contient 2 champs (id_mailing, id_destinataire) :
 
$sel = mysql_query("SELECT id FROM annuaire WHERE ma_condition" );
while($res = mysql_fetch_array($sel))
{
   $ins = mysql_query("INSERT INTO ma_table (id_mailing, id_destinataire) VALUES ('$id_mailing', '$res[id]')" );
}
 
lorsque j'ai une 20en ou 50ene de destinataires ca va, mais dès lors que ca depasse 100, ca commence a mettre du temps et ca bloque carrement au dessus de 900 ou 1000 destinataires :(
 
devrais je stocker les destinataires ds un champ separes par un separateur???
 
que me conseillez vous faire?
 
j'ai egelement teste $ins = mysql_query("INSERT INTO ma_table (champ1, champ2) VALUES ('val1', 'val2'), ('val1', 'val2'), ('val1', 'val2')" );
 
mais ca bloque quand j'ai beaucoup de destinataires... :(

mood
Publicité
Posté le 11-04-2008 à 18:30:32  profilanswer
 

n°1716516
MagicBuzz
Posté le 11-04-2008 à 21:07:52  profilanswer
 

Code :
  1. mysql_query("insert into ma_table(id_mailing, id_destinataire) values select $id_mailing, id from annuaire where ma_condition" );


 
une requête. rapide.
 
:spamafote:


Message édité par MagicBuzz le 11-04-2008 à 21:08:20
n°1717189
redah75
Posté le 14-04-2008 à 12:29:16  profilanswer
 

Ah c genial, merci bp MagicBuzz,
c'est vrai c'est trop rapide :)
juste une petite correction, ca pourrait t'etre utile, la syntaxe est :

Code :
  1. insert into ma_table(id_mailing, id_destinataire) select id_mailing, id from annuaire where ma_condition


 
sans 'values' :)
 
@+


Message édité par redah75 le 14-04-2008 à 12:30:06
n°1717194
redah75
Posté le 14-04-2008 à 12:44:55  profilanswer
 

Ayeye, une toute petite subtilite :(
dans mon exemple id_mailing est une valeur fixe, comment pourrais je executer cette requete?
 
une derniere question, est il possible d'inserer un enregistrement dans 2 tables en une seule requete ???
 
Merci infiniment

n°1717503
MagicBuzz
Posté le 14-04-2008 à 23:17:38  profilanswer
 

ben avec la syntaxe que j'ai utilisé mais sans la value effectivement. $id_mailing pour que php mette en dur ta valeur lors de l'exécution de la requête. t'as tout à fait le droit de sélectionner des constantes en SQL.

n°1717627
redah75
Posté le 15-04-2008 à 10:56:31  profilanswer
 

ah oauisssss, c'est parfait, je pensais que le '$' etait une erreur de ta part comme pour 'value' :)
 
et a ton avis c'est possible de fait un INSERT dans 2 tables en une seukle requete????
 
merci mille fois, tu me sauves :)

n°1718754
MagicBuzz
Posté le 16-04-2008 à 18:47:39  profilanswer
 

non, c'est impossible.
 
enfin... dans une certaine mesure...
 
si tes deux tables sont par exemple liées par une FK, tu peux par exemple écrire une vue qui ramène les lignes des deux tables selon la FK.
 
selon ton SGBD, tu pourras directement modifier les données dans la vue, et ajouter un trigger sur la vue afin de gérer l'insertion : t'insère dans la vue, et le trigger s'occupe d'inserrer dans chacune des deux tables.
 
exemple ici sous SQL Server 2005 :
http://forum.hardware.fr/hfr/Progr [...] m#t1447148

n°1719024
redah75
Posté le 17-04-2008 à 11:15:55  profilanswer
 

OK, bonne documentation :)
 
Merci bp pour tou :)
@+

n°1731291
redah75
Posté le 13-05-2008 à 18:03:57  profilanswer
 

Bonjour, me revoila encore pour une autre petite question :)
 
j'explique mon probleme :
je viens de finir l'ppli mailing que j'ai developpe, et il me reste juste a afficher une page qui affiche les message envoyes (elements envoyes sur outlook).
lorsqu'un mail est envoyer, je stoque l'identifiant des destinataires dans un champs TEXT separe par ~ : 100102~100135~101785.... je fait cela pour ne pas charger la base au bout de qlq temps.
 
1ere question, es tu favorable pour cette solution??
 
ma 2eme question:
afin d'afficher les elements envoye, je dois selectionner les destinataires et les inserer ds une autre table.
 
y a t il une requete simple pour faire ceci, une requete du genre INSERT SELECT ... mais le SELECT ici dois me separer les identifiants :(
 
merci bien

n°1731965
MagicBuzz
Posté le 14-05-2008 à 19:21:35  profilanswer
 

1/ Je n'aime pas ce genre de solution, car c'est de la dénormalisation, donc à éviter. Ensuite, pour des raisons de performances, et éventuellement parceque ça ne sert jamais, il peut être préférable de dénormaliser cependant.
 
2/ Crée une fonction "split" qui retournera une "table" à partir de ton champ text. Tu trouveras sur google, mais aussi sur ce forum, des exemple d'une telle fonction. Je me demande si sous MySQL elle n'existe pas d'ailleurs nativement...

mood
Publicité
Posté le 14-05-2008 à 19:21:35  profilanswer
 

n°1732111
redah75
Posté le 15-05-2008 à 10:37:58  profilanswer
 

Bonjour MagicBuzz et merci pour ta reponse!
 
j'ai finalement opter pour la solution normalisé, je mettrai ulterierement une possibilite d'archivage...
 
il parait qu'une table mysql peut supporter qlq millions d'enregistrement, est ce correcte? et quelles sont les consequences si une table sature? ca influence toute la base???

n°1732416
MagicBuzz
Posté le 15-05-2008 à 20:57:14  profilanswer
 

oui, mysql supporte sans problème des millions de lignes dans une table
 
pour saturer une table mysql, il faut en vouloir (à quelques milliards tu commences juste à te dire que ton PC à la maison est un peu juste)
 
ensuite, t'as des tas de façon de pallier à des problèmes de saturation : partion des tables par exemple

n°1732599
redah75
Posté le 16-05-2008 à 10:41:37  profilanswer
 

OK, ca me laisse alors le temps de bien respirer... :)
 
Merci pour tout MagicBuzz
@+


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  plusieurs INSERT voire meme des milliers

 

Sujets relatifs
Plusieurs milliers d'enregistrements sur la bddMySQL => insert intelligent
Une grosse BDD ou plusieurs ?Plusieurs thèmes sur un site
plusieurs couleurs d'écriture dans un meme comboboxAppuyer simultanément sur plusieurs touches
[Excel]spliter une colonne en plusieurs ?Transférer une variable entre plusieurs scripts python
Macro excel passer plusieurs variable 
Plus de sujets relatifs à : plusieurs INSERT voire meme des milliers


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR