Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1764 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL]Classer résultats requête suivant une liaison réflexive.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL]Classer résultats requête suivant une liaison réflexive.

n°776494
strawfield
Pourquoi k'ca marche pas???
Posté le 24-06-2004 à 17:34:09  profilanswer
 

J'explique le pourquoi de cette question étrange:
 
J'ai une table Dossier_Tbl qui contient:
ID_Dossier
ID_Dossier_précédent
...
 
Je souhaite récupèrer dans une requête mes dossiers dans l'ordre anti-chronologique de réalisation, mais les ID ne sont pas forcément dans l'ordre...
 
Il m'est facile de récupèrer le dernier en sélectionnant le dossier qui n'est jamais cité comme précédent et pour ceux qui précèdent je pensai écrire un truc dans ce genre là:
 
Nom-Requête :
 

Code :
  1. Select
  2. Auto-Incrément, ID_Dossier, ID_Dossier précédent ...
  3. From Dossier_Tbl
  4. Where ID_Dossier=("Select ID_Dossier_précédent From Nom-Requête Where Auto-Incrément" & Auto-Incrément & "-1" );


 
Mais là dedans je ne connai pas la synthaxe de l’auto-incrément…
Et si elle existe je ne sais pas si il est possible que la requête s’appelle elle même…D’ailleurs ca pose déjà un problène pour la première ligne qui ne peut pas faire référence à une précédente !!!
 
Vous avez une idée svp???
 
Puis si rien de tout ca est possible, je suis preneur de toute autre méthode pour classer mes dossiers…
 
 
Merci...d'avance :hello:


Message édité par strawfield le 24-06-2004 à 17:38:42
mood
Publicité
Posté le 24-06-2004 à 17:34:09  profilanswer
 

n°776537
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-06-2004 à 17:51:36  profilanswer
 

CONNECT BY ... PRIOR ...
 
Seul Oracle supporte cette fonction.
 
Il n'y a aucun autre moyen pour faire ça avec aucun autre SGBD.
 
A la limite tu peux te faire une procédure stockée de ouf, mais tu seras limité à un moment ou à un autre.


Message édité par Arjuna le 24-06-2004 à 17:51:43
n°776698
strawfield
Pourquoi k'ca marche pas???
Posté le 24-06-2004 à 19:24:15  profilanswer
 

Arjuna a écrit :

CONNECT BY ... PRIOR ...
 
Seul Oracle supporte cette fonction.
 
Il n'y a aucun autre moyen pour faire ça avec aucun autre SGBD.
 
A la limite tu peux te faire une procédure stockée de ouf, mais tu seras limité à un moment ou à un autre.


 
AÏE!!!!!  :cry:  
 
Bon, ben j'ai une solution de  [:adsl1978] :
Vu que je veut les 5 derniers, je  vais faire 5 requêtes qui fonctionnent en "Cascade"...puis un formulaire qui les présentes en tableau pour faire comme si il n'y en vait qu'une...
 
 
A moins qu'un fana du sql passe par là entre temps...
 
 
Merci du tuyau...
 
 :hello:

n°777233
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-06-2004 à 23:49:17  profilanswer
 

ben tu peux faire 5 jointures sur la meme table...
 
select lvl1.id, lvl2.id, lvl3.id, lvl4.id, lvl5.id
from latable lvl1, latable lvl2n latable lvl3, latable lvl4, latable lvl5
where lvl1.id = 1 and lvl2.pere = lvl1.id and lvl3.pere = lvl2.id and lvl4.pere = lvl3.id and lvl5.pere = lvl4.id

n°777708
strawfield
Pourquoi k'ca marche pas???
Posté le 25-06-2004 à 12:01:39  profilanswer
 

Arjuna a écrit :

ben tu peux faire 5 jointures sur la meme table...
 
select lvl1.id, lvl2.id, lvl3.id, lvl4.id, lvl5.id
from latable lvl1, latable lvl2n latable lvl3, latable lvl4, latable lvl5
where lvl1.id = 1 and lvl2.pere = lvl1.id and lvl3.pere = lvl2.id and lvl4.pere = lvl3.id and lvl5.pere = lvl4.id


 
Excelente idée!!!!
 
J'ai écrit ca:
 

Code :
  1. SELECT
  2. D1.[N° Dossier], D1.[Dossier Précédent], ...
  3. D2.[N° Dossier], D2.[Dossier Précédent], ...
  4. D3.[N° Dossier], D3.[Dossier Précédent], ...
  5. D4.[N° Dossier], D4.[Dossier Précédent], ...
  6. D5.[N° Dossier], D5.[Dossier Précédent], ...
  7. FROM Dossier AS D1, Dossier AS D2, Dossier AS D3, Dossier AS D4, Dossier AS D5
  8. WHERE
  9. ((D1.[N° dossier]) Not In (Select [Dossier précédent] FROM Dossier))
  10. AND
  11. D2.[N° Dossier]=D1.[Dossier précédent]
  12. AND
  13. D3.[N° Dossier]=D2.[Dossier précédent]
  14. AND
  15. D4.[N° Dossier]=D3.[Dossier précédent]
  16. AND
  17. D5.[N° Dossier]=D3.[Dossier précédent];


 
Ca marche sans souci...ca me met tout sur la même ligne de la reqête mais je m'en accomoderai au niveau de l'interface...
 
 
Merci beaucoup!!!
 
 :hello:  :hello:


Message édité par strawfield le 25-06-2004 à 14:39:15
n°777923
Arjuna
Aircraft Ident.: F-MBSD
Posté le 25-06-2004 à 14:03:54  profilanswer
 

Euh, y'a un problème avec tes jointures je pense... D'un côté il y a le numéro du dossier, et de l'autre celui du père logiquement. La tu retournes 5 fois le même ;)

n°778028
strawfield
Pourquoi k'ca marche pas???
Posté le 25-06-2004 à 14:39:58  profilanswer
 

Arjuna a écrit :

Euh, y'a un problème avec tes jointures je pense... D'un côté il y a le numéro du dossier, et de l'autre celui du père logiquement. La tu retournes 5 fois le même ;)


 
Je venais de m'en rendre compte...Merci!!!
 
J'ai édité le code...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL]Classer résultats requête suivant une liaison réflexive.

 

Sujets relatifs
C# : requete sql avec parametres !![VBA Excel] Erreur 424 sur une requete sql Access dans excel [Resolu]
Librairie Base de donnée SQL pour C++requete sql mise à jour dans code vb
[access](RESOLU) savoir si une requête sort un résultat ou non ??mysql : requête entre plusieurs lignes N, N-1, N-2, etc...
Erreur SQL avec INSERT! 
Plus de sujets relatifs à : [SQL]Classer résultats requête suivant une liaison réflexive.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR