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 :

Problèmes de redondance


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 29
    Points : 16
    Points
    16
    Par défaut Problèmes de redondance
    Bonjour à tous,

    J'ai un souci concernant un rapport de gestion qui doit retourner les email et/ou les téléphones des personnes possédant une carte bancaire bientôt périmée.
    Cependant la table dans laquelle est enregistrée les numéros est de cette forme :

    IdPersonne A -- Nom -- Numéro1
    IdPersonne A -- Nom -- Numéro2
    IdPersonne A -- Nom -- Email


    Et donc lorsque j'effectue la jointure avec ma requête trouvant les personnes cibles et que je veux afficher leurs numéros j'ai dans mon rapport final autant de ligne pour chaque enregistrement que je vous ai montré précedemment. J'aimerais les mettre en colonne les uns à la suite des autres, est ce possible ?

    Merci d'avance

  2. #2
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Il s'agit d'un pivot, un recherche rapide sur le forum de ton SGBD te montrera de bons exemples.
    ~ Lola ~

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 540
    Points : 532
    Points
    532
    Par défaut
    Bonjour, la manière dont est conçue la table explique ce résultat. Tu viole une règle de codd concernant les dépendances fonctionnelles.

    Il faut séparer ce que tu fais en deux tables

    IdPersonne A -- Nom

    IdPersonne A -- uneCoordonneé

    Tu auras autant de ligne que de numéro

    Ou bien :

    IdPersonne A -- Nom -- Numéro1 -- Numéro2 -- Mail

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Le problème est que je dois effectuer des rapporst et non une refonte de la bdd, je précise que je travaille sous Sybase et que la fonction pivot n'existe pas, et je ne toujours pas comment faire autrement ...
    merci quand même

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,

    C'est juste pas possible avec seulement ces colonnes.

    Il faudrait à minima connaitre le type de la donnée (tel / email) via une autre colonne.

    Ensuite si, et seulement si, le nombre maximum de tel / e-mail est fixé on peut arriver à un résultat en utilisant une fonction olap couplé à un group by.

    Si le nombre de tel / e-meil est variable, en utilisant une fonction olap + recurssion on peut facillement arrivé à avoir une chaîne où l'on concataine tous les numéros.


    En dernier recours => utilisez un algo côté applicatif pour présenter les données.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    J'ai trouvé des informations sur les fonctions de regroupement fenêtrées.

    Cependant j'ai une erreur de syntaxe au niveau du Over et je ne trouve pas de documentation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT rownum=identity(10), customer.customerid, number 
    OVER (partition by customerid order by number)  niv

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Les fonctions de fenêtrages ne sont pas implémentées sur Sybase ASE.
    Elles existent je crois sur Sybase IQ.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2011
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    d'accord merci, il y a t-il un autre moyen alors ?

  9. #9
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 540
    Points : 532
    Points
    532
    Par défaut
    Coté bas de données, non. Il faut que tu trouves un moyen quand tu exploiteras les résultats des requetes.
    Si la string a un @ tu sais que c'est une adresse mail. Sinon c'est un téléphone.
    La le SGBD ne fera rien de plus pour toi

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

Discussions similaires

  1. Problème de redondances des données dans BO
    Par djams9 dans le forum Designer
    Réponses: 5
    Dernier message: 16/01/2013, 10h29
  2. Problèmes de redondances dans un vecteur
    Par le.nono dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 25/02/2012, 09h21
  3. [JDOM] Ajout d'éléments triés selon leur nom et problème de redondance.
    Par _fav_ dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 05/08/2010, 11h24
  4. Problème de redondance
    Par gadalla dans le forum Pascal
    Réponses: 2
    Dernier message: 05/01/2008, 10h21
  5. Problème listage redondant de données
    Par ducrocq62 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/03/2007, 04h17

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