IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

probème de concaténation


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Par défaut probème de concaténation
    Dans le resultat de ma requête SQL, J'obtiens plusieurs lignes identiques car une information change.
    Je voudrais savoir s'il est possible de concaténer ces informations dans la même cellule pour n'obtenir alors qu'un seule ligne et non plusieurs pour seulement une information changeante.
    Par exemple, j'ai un bouquin qui a été vendu et ce bouquin a été payé une partie en espèce et une partie en CB. Au lieu d'avoir une ligne pour l'espèce et une ligne pour le CB, j'aimerais faire une requête qui mettent ces 2 informations dans la même cellule.
    J'espère avoir été claire.
    Merci

  2. #2
    rsc
    rsc est déconnecté
    Membre émérite
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Par défaut Re: probème de concaténation
    Citation Envoyé par claralavraie
    J'espère avoir été claire.
    Pas tout à fait Que veux-tu dans ta ligne ?
    Si c'est seulement les données communes, il suffit de faire un SELECT DISTINCT, avec le nom des champs voulus derrière.
    Si en plus tu veux par ex. le montant total par bouquin, il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Champ1, Champ2, SUM (Montant) FROM Matable
    GROUP BY Champ1, Champ2

  3. #3
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Par défaut
    bon je vais essayer d'expliquer ce problème plus clairement :-)
    je vais donc prendre un exemple concret. Ce sera plus simple je pense de comprendre.
    Alors voilà j’ai une requête avec jointure sur plusieurs tables.
    J’obtiens ce résultat :
    Nom_bouquin_ montant payé méthode paiement
    Truc 10 euros CB
    Truc 10 euros espèce
    Donc au lieu d’avoir 2 lignes pour le même bouquin à cause d’ une méthode de paiement différente, j’aimerais avoir ceci :
    Nombouquin montant payé méthode paiement
    Truc 10 euros CB, espèce…
    Je me demande si c’est possible.
    J’espère avoir été plus claire

  4. #4
    Membre Expert
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Par défaut
    Pourquoi veux tu faire cela.
    Ca me semble bizarre d'avoir besoin de cela.
    Si le nombre de méthode de paiement est fixe ca doit être jouable mais si c'est dynamique j'en suis moins sur.

    Typiquement comment appelerais tu tes entêtes de champs dans ton cas ?

  5. #5
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    Citation Envoyé par ze_key
    Si le nombre de méthode de paiement est fixe ca doit être jouable mais si c'est dynamique j'en suis moins sur.
    Pour le cas dynamique, et en fonction de la syntaxe disponible avec ton SGBDR :
    Il n'est pas inutile de consulter la FAQ de ce forum de temps en temps

  6. #6
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Par défaut tout refaire
    OK donc si je comprends bien, il faut créer ma table avec la syntaxe with px......etc...
    mais je ne peux pas recréer ma table alors comment puis je faire?

  7. #7
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    Non, il n'est pas question de re-créer la table :
    • Soit tu utilises ORACLE,
      Soit ton moteur accepte la syntaxe normée "WITH RECURSIVE",
      Soit le nombre de méthode de paiement est fixe,
      Soit tu utilises une fonction stockée,
      Soit tu pleures.

    Bon courage

  8. #8
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Par défaut
    j'ai reussi à faire une fonction très simple....ça marche super bien...fort heureusement ;-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Concaténation de 2 select en 1 seul
    Par Fleep dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/08/2003, 11h38
  2. Char(x) -> chaine concaténée d'espaces ?
    Par rgz dans le forum Débuter
    Réponses: 7
    Dernier message: 27/06/2003, 11h59
  3. Concaténation vertical ???
    Par loaded dans le forum Langage SQL
    Réponses: 10
    Dernier message: 07/05/2003, 15h44
  4. Concaténer TStrings
    Par Tuxxy dans le forum Composants VCL
    Réponses: 8
    Dernier message: 07/03/2003, 12h30
  5. Concaténation de String et Integer
    Par Ingham dans le forum Langage
    Réponses: 5
    Dernier message: 21/01/2003, 17h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo