Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/10/2007, 10h29   #1
Membre du Club
 
Inscription : octobre 2006
Messages : 102
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 102
Points : 46
Points : 46
Par défaut Des Insert dans une table à partir de données contenues dans une autre

Bonjour à tous,

Je dois insérer des données dans une table en me basant sur une sélection et des données contenues dans une autre.

Disons par ex. que j'ai une table Personnes:

et je dois abonner en 2008 à une revue tous les habitants d'une commune. Je dois donc insérer dans la table Abonnements des données de la forme

Code :
id personne_id  annee_abonnement
où id est auto-incrémenté.

Je dois donc faire une opération du genre

Code :
1
2
3
Pour chaque personne WHERE commune LIKE machin:
 
INSERT INTO abonnements (personne_id, annee_abonnement) VALUES (personne_id, '2008')
Comment réaliser ce genre de chose ?

Merci d'avance
gvdmoort est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2007, 11h53   #2
Modérateur
 
Avatar de Cybher
 
Homme Michel
Consultant informatique
Inscription : mai 2005
Messages : 3 006
Détails du profil
Informations personnelles :
Nom : Homme Michel
Âge : 29
Localisation : France

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : mai 2005
Messages : 3 006
Points : 4 039
Points : 4 039
salut,


quelque chose dans ce style
Code :
INSERT INTO abonnements  SELECT personne_id, '2008' FROM personnes WHERE commune LIKE ..
A+
Cybher est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2007, 23h49   #3
Membre du Club
 
Inscription : octobre 2006
Messages : 102
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 102
Points : 46
Points : 46
Merci,

La solution était précisément

Code :
INSERT INTO abonnements  SELECT NULL,personne_id, '2008' FROM personnes WHERE commune LIKE ..
parce que le nombre de colonnes insérées doit être égal à celui présent dans la talble. Le fait d'insérer un NULL permet au champs auto-incrémenté de faire, eh bien ce qu'il a à faire, s'incrémenter

(Je ne l'ai pas trouvé tout seul, j'ai regardé le code SQL de la même opération effectuée avec PhpMyAdmin)
gvdmoort est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h27.


 
 
 
 
Partenaires

Hébergement Web