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 23/05/2007, 10h21   #1
Futur Membre du Club
 
Inscription : avril 2007
Messages : 42
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 42
Points : 16
Points : 16
Par défaut Concaténer un SELECT dans une colonne

Bonjour,

Nouvelle épreuve en ce beau jour ensoleillé. J'essaye de mettre le résultat d'une requête dans une seule colonne.

Voici mon code pour être plus clair :

Code :
1
2
3
4
5
6
7
DELIMITER $$
CREATE TRIGGER UPD_FAC AFTER UPDATE ON FAC
FOR EACH ROW
BEGIN
INSERT INTO LOG (`DATE`,`TABLE`,TYPE,ENREGISTREMENT,COMMENTAIRE) VALUES 
(NOW(),"FAC","UPDATE",(SELECT CONCAT(SELECT * FROM FAC WHERE Numero=NEW.Numero),"");
END$$
Je voudrais mettre dans ma requête enregistrement, la ligne qui vient d'être modifié et cela en utilisant un CONCAT pour contatener toutes les colonnes.

Quelqu'un aurait-il une idée de comment je pourrais procéder ?
cactus2078 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2007, 12h17   #2
Membre Expert
 
Avatar de Jasmine80
 
Jasmine
Inscription : octobre 2006
Messages : 2 824
Détails du profil
Informations personnelles :
Nom : Jasmine
Âge : 32
Localisation : Belgique

Informations forums :
Inscription : octobre 2006
Messages : 2 824
Points : 2 083
Points : 2 083
As-tu tant de champs que ça que tu ne peux pas les citer un à un?
^^ ça serait trop simple peut être. Pourquoi faire un double SELECT? (SELECT CONCAT(SELECT...)?
SELECT CONCAT(champ1, champ2, ... champ10, " ")

Code :
SELECT CONCAT(champ1, champ2, champ3, champ4, champ5, champ6, champ7, champ8, champ9, champ10, " ") FROM fac WHERE Numero=NEW.Numero

Jasmine,
Jasmine80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2007, 13h06   #3
Futur Membre du Club
 
Inscription : avril 2007
Messages : 42
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 42
Points : 16
Points : 16
Pour répondre à ta question, oui j'ai tant de champ que ça. Entre 100 et 200 !
C'est pour ça que je cherche une solution plus simple et plus rapide.

La requête que j'ai présenté, c'est juste un essai mais ça permet aussi de comprendre mieux ce que je veux faire.

Merci tout de même
cactus2078 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2007, 16h04   #4
Membre Expert
 
Avatar de Sivrît
 
Inscription : février 2006
Messages : 953
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2006
Messages : 953
Points : 1 189
Points : 1 189
Je ne vois plus qu'une solution : créer le(s) trigger(s) via un script qui va écrire le concat en se basant sur un DESC/SHOW COLUMNS. De ce point de vue là plus besoin de SELECT, utiliser NEW suffit.

PREPARE/EXECUTE pourraient aider mais ils sont interdits dans les trigger
Sivrît est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2007, 19h48   #5
Membre Expert
 
Inscription : août 2002
Messages : 1 036
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 1 036
Points : 1 166
Points : 1 166
Bonjour,

Personnellement, ayant une table contenant de 100 à 200 champs, je commencerais par me demander si les données ne peuvent pas être structurées différemment.
jeca est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2007, 20h12   #6
Futur Membre du Club
 
Inscription : avril 2007
Messages : 42
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 42
Points : 16
Points : 16
En fait, j'ai plusieurs tables et elles ont des noms de champs différents, donc au final quand on ajoute tous les champs, on arrive bien à ce nombre.
cactus2078 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 21h52.


 
 
 
 
Partenaires

Hébergement Web