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

Développement SQL Server Discussion :

Afficher les champs de 2 colonnes ligne par ligne


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Homme Profil pro
    dev
    Inscrit en
    Février 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Février 2015
    Messages : 80
    Points : 44
    Points
    44
    Par défaut Afficher les champs de 2 colonnes ligne par ligne
    Bonjour,

    j'ai chercher de tout les cotés, particulierement avec les CTE, voici mon probleme:

    col1 col2 col3
    a c21 c31
    a c22 c32
    b c23 c33

    doit donner :

    col1 col4
    a c21
    a c31
    a c22
    a c32
    b c23
    b c33

    Merci pour votre aide.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Avec des UNIONs ?
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    select col1,col2
    from LaTable
    union
    select col1,col3
    from LaTable
    union
    ...

    Tatayo.

  3. #3
    Membre du Club
    Homme Profil pro
    dev
    Inscrit en
    Février 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Février 2015
    Messages : 80
    Points : 44
    Points
    44
    Par défaut
    Non, ca me selectionne les valeurs distinctes des 2 colonnes.

    Voici les premieres valeurs des colonnes:

    plan etp etp_next
    5-----4-----3
    5-----3-----5
    5-----5-----7
    5-----7-----2
    5-----2-----Null
    6-----2-----3
    6-----3-----Null

    Mon but est au final de verifier la presence de boucles: Pour une valeur de plan, si on suit les etp (4>3>3>5>5>7>7>2>2>Null), je cherche les etp_next qui pointent sur un etp deja passé

    Exemple: 4>3>3>2>2>4 est un boucle car on est passé par le 4:

    plan etp etp_next
    5-----4-----3
    5-----3-----2
    5-----2-----4

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Pour ne pas dédoublonner, il faut utiliser UNION ALL.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre du Club
    Homme Profil pro
    dev
    Inscrit en
    Février 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Février 2015
    Messages : 80
    Points : 44
    Points
    44
    Par défaut
    Le probleme est qu'en faisant union all, ca me selectionne la premiere colonne et en dessous la 2eme, mon but est d'avoir le 1er champ de la colonne 1 puis le 1er de la colonne 2, puis le 2eme de la colonne 1, et ainsi de suite.

    Je cherche ensuite a leur attribuer un id (avec un compteur), afin de voir si deux champs avec des id qui ne se suivent pas ont la meme valeur.

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    C'est une question de tri du résultat.
    Il fait ajouter une clause ORDER BY à la fin de la requête pour définir l'ordre des lignes retournées.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  7. #7
    Membre du Club
    Homme Profil pro
    dev
    Inscrit en
    Février 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Février 2015
    Messages : 80
    Points : 44
    Points
    44
    Par défaut
    Ok, j'etais sur le order by, je regarde dans ce sens, merci.

  8. #8
    Membre du Club
    Homme Profil pro
    dev
    Inscrit en
    Février 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Février 2015
    Messages : 80
    Points : 44
    Points
    44
    Par défaut
    Bonjour,

    ma CTE produit un boucle et donc une erreur: L'instruction a été terminée. La récursivité maximale 100 a été épuisée avant la fin de l'instruction.

    J'aimerais quand meme afficher (Select * from cte) le resultat de la cte, car celle ci me produit, quand il y a erreur:

    col1 col2 col3
    5----2----3
    5----3----4
    5----4----2
    5----2----3
    5----3----4
    5----4----2
    5----2----3
    5----3----4
    5----4----2
    ect


    C'est le resultat que je cherche, j'aimerais donc afficher ce 5----2----3 ou 5----2----3 5----3----4 5----4----2.

    Ou si ce n'est pas possible, arreter la CTE avant de boucler.

    Voici la CTE:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    		WITH CTEA (id_plan, id_firstetp)
    AS
    (
    SELECT distinct p.PLAN_Type_Id as id_plan, p.ETAP_TypeFirst_Id as id_firstetp from PLAN_Type_FIRST_ETAP_Type p where p.ETAP_TypeFirst_Id is not null
    ),
    		    cte (id_plan,id_firstetp, etp_next)
    AS     (SELECT  c.id_plan, et.ETAP_Type_Id, et.ETAP_TypeNext_Id as etp_next from ETAP_TypeTransition as et inner join CTEA as c
    		on c.id_plan=et.PLAN_Type_Id and c.id_firstetp=et.ETAP_Type_Id
            UNION ALL
            SELECT et.PLAN_Type_Id, et.ETAP_Type_Id, et.ETAP_TypeNext_Id
            FROM   cte inner join ETAP_TypeTransition et
    		on etp_next=et.ETAP_Type_Id and et.PLAN_Type_Id=id_plan
           )
    	   select * from cte
    Merci pour votre aide.

  9. #9
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Difficile de comprendre ce que fait votre CTE. Les noms de colonnes changent à chaque post. L'idéal serait de fournir le CREATE des tables, ainsi qu'un jeu d'essai sous forme d'INSERT.

    Notez que vous pouvez modifier la limite de récursion, avec un OPTION (MAXRECURSION n) en fin de requête. Il est toutefois probable que votre CTE tourne en boucle, car je ne vois pas de condition d’arrêt, notamment pour les chemins qui forment des boucles. Vous pouvez stocker les "étapes" déjà empreintes au fur et a mesure dans une colonne supplémentaire de type XML, et arrêter la récursion si vous repassez par un point.

    A mon avis, il vous manque aussi une notion d'ordre quelque part...

  10. #10
    Membre du Club
    Homme Profil pro
    dev
    Inscrit en
    Février 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Février 2015
    Messages : 80
    Points : 44
    Points
    44
    Par défaut
    Bonjour,

    comment ajouter une colonne XML et vérifier ce qui est dedans pendant la CTE ?

    Je suis novice en SQL, j'ai cherché mais pas trouver comment appliquer

    Merci

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

Discussions similaires

  1. Comparer ligne par ligne les valeurs dans la colonne de table
    Par Hobinantenaina1 dans le forum WinDev
    Réponses: 13
    Dernier message: 25/04/2017, 15h22
  2. Réponses: 0
    Dernier message: 09/06/2015, 14h19
  3. [MySQL] Afficher les données ligne par ligne
    Par the watcher dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 06/02/2009, 17h50
  4. [MySQL] Afficher les champs nom et prénom dans la même colonne
    Par batoule80 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/11/2008, 21h40
  5. aditionner les champs d'une table ligne par ligne
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 3
    Dernier message: 09/08/2005, 08h38

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