Forum Clubic

SQL - INSERT sur plusieurs lignes

Bonjour à tous,

Voici mon problème. Sur une base SQL, je dispose d’une table dédiée aux données des utilisateurs. Sur une autre table, je souhaiterais ajouter une ligne pour chacun des ID de la table utilisateur, avec les mêmes valeurs. Ca semble tout bête, mais je n’arrive pas à trouver l’astuce.

En gros, ce que je voudrais faire, c’est :
INSERT INTO table (champ1, champ2) VALUES (1, 2) WHERE id = tous.

Je voudrais faire ça via une simple requête SQL. Je pense à une boucle, mais je sais pas trop si je peux en faire ici.

Quelqu’un pour me sortir de ce pétrin ?

Merci :hello:
Edité le 26/12/2011 à 10:07

les requettes sql supportent les boucles aucun problème.

D’accord, mais euh… j’vois pas comment faire là :nexath

Tu fait un select relié à ta première table pour sortir toutes les infos sur les utilisateurs qui sera une boucle. Dans cette boucle tu envoit ton insert relié au variable de la première table.

Euh… ouais, tout suivi là :paf: :paf: :smiley:

Les “VALUES (1, 2)” que je veux insérer ne sont indiquées nul part dans quelconque table…
Edité le 26/12/2011 à 17:00

Faut faire un select dans ton insert, exemple:


INSERT INTO table (champ1, champ2) select id, autreChamp from utilisateurs

Tu peux bien entendu ajouter une clause where à ta requête select
Edité le 26/12/2011 à 18:47

Disons qu’en théorie c’est facile mais qu’en pratique le sql :nexath Bon après je connait pas ton niveau en php mais en gros ta requette doit ressembler plus ou moins à ça


while($data = mysql_fetch_assoc($req))
    {
    $sql_2 = "INSERT INTO";
    mysql_query($sql_.) or die('Erreur SQL !'.$sql_2.'<br>'.mysql_error()); 
    } 

En SQL, tout simplement :

insert into T (A, B) select :valA, :valB from User;

à toi de remplacer :valA et :valB par les bonnes valeurs. Par contre, je doute que tu ne fasse qu’ajouter N lignes pour tous les utilisateurs auquel cas tu vas avoir des problèmes de doublon…

Je suis toujours vivant hein :smiley:

Je n’ai pas la base sous la main, je testerai ça au plusu vite et te tiendrai au courant.

Merki à tous pour vos réponses ^ ^)