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 :

Lecture de la table en largeur ?


Sujet :

Langage SQL

  1. #1
    Membre actif
    Avatar de troxsa
    Inscrit en
    Novembre 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Novembre 2004
    Messages : 386
    Points : 264
    Points
    264
    Par défaut Lecture de la table en largeur ?
    Bonjour a tous

    Je vous expose mon problème :
    J’ai donc une Table (SQL server 2005) avec deux colonnes


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ID     |      AdressIP
    -------------------------
    10     |     10.10.10.10
    10     |     11.11.11.11
    10     |     12.12.12.12
    15     |     30.10.10.10
    15     |     30.10.11.11
    30     |     169.10.10.1
    Ce que je recherche a faire c'est d'avoir un seul ID par ligne et 3 colonnes

    Comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ID     |      AdressIP1     |     AdressIP2   |      AdressIP3
    -----------------------------------------------------------------
    10     |     10.10.10.10   |     11.11.11.11  |     12.12.12.12
    15     |     30.10.10.10   |     30.10.11.11  |    ----
    30     |     169.10.10.1   |        ----      |    ----
    J'ai essayé pas mal de chose, Inner join, Distinct, Group By, ext, mais rien n'a fonctionner, je doit pas les utilises correctement certainement !

    Avez vous une idée une piste ?

    En vous remerciant par avance

    Cordialement,
    Troxsa

  2. #2
    Expert éminent
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Points : 7 291
    Points
    7 291

  3. #3
    Membre actif
    Avatar de troxsa
    Inscrit en
    Novembre 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Novembre 2004
    Messages : 386
    Points : 264
    Points
    264
    Par défaut
    Oui j'avais vu, ça m'aide pas beaucoup !

    Dans l'exemple (du lien) il connais deja le nom ou bureau (valeur string)
    je ne connais pas les valeurs qu'il va traité (les ID).

    Je débute dans l'écriture SQL, pourrais tu me donner plus d'informations ????

  4. #4
    Membre confirmé Avatar de elbj
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Services à domicile

    Informations forums :
    Inscription : Novembre 2004
    Messages : 371
    Points : 558
    Points
    558
    Par défaut
    Bonjour

    troxsa : dans quel contexte tes données vont-elles être utilisées, est-ce une requête pour que le résultat soit affiché par une application ?

    Si oui alors c'est à l'application en question de se charger de la mise en forme des données.

    Si non alors il va faloir jongler un peu... mais comme souvent répété, il n'appartient pas à SQL de gérer la présentation des données.

    Cordialement

  5. #5
    Expert éminent
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Points : 7 291
    Points
    7 291
    Par défaut
    En clair SQL n'est pas fait pour cela, c'est à l'application qui reçoit les données de les mettres en forme.

    Il y a bien le mot clé PIVOT qui existe sous SQL server mais je ne l'ai jamais utilisé. On peut aussi utiliser des fonctions analytiques que l'on va "tordre" pour transposer les résultats. Il y aussi les expressions multidimensionnelles (MDX) que je n'ai pas utilisé non plus.

    Mais ce n'est pas dans la logique d'un SGBD de faire la mise en forme.

    edit: grillé, en même temps

    edit: en cas de besoin, mais j'évites, j'utilises les UNION avec des fonctions de regroupement avec des alias d'une même table repeté plusieurs fois. ça fait de grosses requêtes pas trop lisible mais c'est du SQL standard contrairement aux exemples que je t'ai donné.

  6. #6
    Membre actif
    Avatar de troxsa
    Inscrit en
    Novembre 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Novembre 2004
    Messages : 386
    Points : 264
    Points
    264
    Par défaut
    Merci a tous
    Mon problème est résolut, comment ?
    j'ai fait une View pour chaque ID/adresse IP
    Donc sa donne
    View_AdresseIP1 (Table de référence) (Count = 2700)
    View_AdresseIP2 (Inner Join Right) (Count = 800)
    View_AdresseIP3 (Inner Join Left) (Count = 200)

    Par la suite j'ai fait un Create view sur ce résultat


    Je pouvais pas le faire via l'application car meme l'application ne sais pas géré ce genre d'information (l'application en question est SMS pour creer des reports)

    Merci pour vos aides qui fut bien précieuse pour moi qui début ! (c'est pas facile)

    Bonne continuation a tous et bonne année

  7. #7
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 091
    Points : 31 510
    Points
    31 510
    Billets dans le blog
    16
    Par défaut
    Bonjour et bonne année à vous aussi,

    Dans les années quatre-vints, on utilisait une requête du genre de celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    SELECT   a.ID, a.AdrIP, b.AdrIP, c.AdrIP 
    FROM     T AS a
           , T AS b 
           , T AS c 
    WHERE    a.ID = b.ID
      AND    a.ID = c.ID
      AND    a.AdrIP < b.AdrIP
      AND    b.AdrIP < c.AdrIP
    UNION
    SELECT   a.ID, a.AdrIP, b.AdrIP, '--' 
    FROM     T AS a
           , T AS b 
    WHERE    a.ID = b.ID
      AND    a.AdrIP < b.AdrIP
      AND    NOT EXISTS (SELECT   *
                         FROM     T AS c
                                , T AS d 
                                , T AS e 
                         WHERE    a.ID = c.ID
                           AND    c.ID = d.ID
                           AND    d.ID = e.ID
                           AND    c.AdrIP < d.AdrIP
                           AND    d.AdrIP < e.AdrIP
                         )
    UNION
    SELECT   a.ID, a.AdrIP, '--', '--'
    FROM     T AS a
    WHERE NOT EXISTS (SELECT   *
                      FROM     T AS b
                             , T AS c
                      WHERE    a.ID = b.ID  
                        AND    b.ID = c.ID
                        AND    b.AdrIP < c.AdrIP
                     )
      AND NOT EXISTS (SELECT   *
                      FROM     T AS d
                             , T AS e 
                             , T AS f 
                      WHERE    a.ID = d.ID
                        AND    d.ID = e.ID
                        AND    e.ID = f.ID
                        AND    d.AdrIP < e.AdrIP
                        AND    e.AdrIP < f.AdrIP
                      ) ;
    Aujourd'hui, on devrait pouvoir simplifier grâce à la jointure récursive. Les cracks du SQL vous donneront vraisemblablement la solution ad-hoc...

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

Discussions similaires

  1. Accès simultanés : bloquer la lecture d'une table
    Par rohstev dans le forum Access
    Réponses: 12
    Dernier message: 01/02/2008, 20h04
  2. PB lecture ou import table DB2 dans ACCESS
    Par Invité dans le forum Access
    Réponses: 2
    Dernier message: 22/06/2006, 14h54
  3. [VB + ADO]Probléme de lecture d'une table
    Par FlynuxS dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 06/06/2006, 10h58
  4. Réponses: 2
    Dernier message: 16/05/2006, 14h17
  5. Lecture d'une table html
    Par kodo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/05/2006, 13h51

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