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.
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.
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.
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
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.
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.
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.
Ok, j'etais sur le order by, je regarde dans ce sens, merci.
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:
Merci pour votre aide.
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
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...
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager