MySQL : plusieurs valeurs de la colonne 1 chaîne séparée par des virgules?
Supposons que j'ai une requête select comme :
SELECT * FROM tablename
et dans le tableau sont des colonnes : champ1, champ2 et champ3
Personne ne sait si il est possible d'obtenir un jeu de résultats avec seulement 1 rangée avec 1, avec des valeurs séparées par des virgules des colonnes, comme ceci :
"fieldvalue1, fieldvalue2, fieldvalue3"
Problème est que je ne connais pas les noms de colonne de la table à l'avance...
Un autre problème est qu'une instruction préparée est pas le chemin à parcourir, car tout cela doit être fait à partir de l'intérieur d'un déclencheur, et MySQL n'autorise pas les curseurs dynamiques/sélectionne l'intérieur d'un déclencheur.
J'ai mal compris votre question, oups. Je pensais que vous vouliez que les noms de colonnes séparées par des virgules.
OriginalL'auteur Dylan | 2011-01-03
Vous devez vous connecter pour publier un commentaire.
J'ai fait quelques recherches et ne sont venus d'aussi loin que GROUP_CONCATenating les noms de colonne correctement. Mais le problème, c'est que
sera de retour une seule et même chaîne concaténée contenant les noms de colonne, une seule fois pour chaque ligne de la table, au lieu de l'évaluer comme les noms de colonne pour l'instruction de sélection externe et le retour de la valeur réelle.
De ce que j'ai lu dans tous les forums de la discussion de ce genre de question (et il y en avait plusieurs), il n'y a vraiment aucun moyen de faire ce travail sans préparées.
Je ne peux que penser à une autre façon de faire, et qui serait le fait de consacrer une colonne sur chaque table, où vous concaténer l'individu valeurs de la colonne lors de l'INSERTION ou de mise à JOUR, de sorte que vous pouvez simplement sélectionner ce champ au lieu de l'ensemble des champs.
OriginalL'auteur weltraumpirat
Première, à savoir les noms de colonnes à l'avance, en supposant que vous avez le nom de la table, vous pouvez les obtenir que toute autre requête:
Une fois que vous avez les noms vous pouvez faire:
OriginalL'auteur Nabab
Semble que vous ayez 3 questions ici:
L'obtention d'un jeu de résultats avec 1 ligne, 1 terrain: MYSQL a un CONCAT_WS fonction qui fonctionne comme ceci:
SELECT CONCAT_WS(',',Field1,Field2,Field3)
Qui sera de retour "Field1Value, Field2Value, Field3Value"
Je ne suis pas sûr de savoir comment vous allez obtenir ces noms de colonnes. Avez-vous besoin pour obtenir à partir d'une instruction sql, une chaîne de caractères, etc. ? Vous pouvez obtenir les noms de table "AFFICHER les COLONNES DE tablename". Le Champ colonne aura les noms de colonne.
Déclencheurs sont disponibles en mysql (ajouté dans la version 5.0.2, je pense): http://dev.mysql.com/doc/refman/5.0/en/triggers.html
Si vous avez la possibilité d'exécuter un service, vous pouvez utiliser le déclencheur pour insérer des données dans une table qui sera scannée périodiquement. Selon vos besoins, vous pourriez avoir votre déclencher être aussi simple que "INSERT INTO TriggeredCodeTable(csvfields,tablename)". Le service de numérisation de la table, aussi souvent que nécessaire et de créer des instructions sql dynamiques pour faire ce que vous avez besoin. Pas aussi beau que d'un simple déclenchement, mais c'est faisable
OriginalL'auteur ChrisG