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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requete SQL ?

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Requete SQL ?

n°1331070
imnotgood
Posté le 23-03-2006 à 14:41:39  profilanswer
 

Bonjour,
 
Je suis confronté à un petit probleme. J'espère que vous pourrez m'illumnier un petit peu ;-)
 
Ma table :

Code :
  1. +----+-----+---------+
  2. | ID | SID | LIBELLE |
  3. +----+-----+---------+
  4. | 01 | 00  | LIB N01 |
  5. | 02 | 01  | LIB N02 |
  6. | 03 | 02  | LIB N03 |
  7. | 04 | 00  | LIB N04 |
  8. | 05 | 00  | LIB N05 |
  9. | 06 | 03  | LIB N06 |
  10. | 07 | 00  | LIB N07 |
  11. | 08 | 00  | LIB N08 |
  12. | 09 | 00  | LIB N09 |
  13. | 10 | 00  | LIB N10 |
  14. | 11 | 09  | LIB N11 |
  15. | 12 | 00  | LIB N12 |
  16. | 13 | 01  | LIB N13 |
  17. | 14 | 12  | LIB N14 |
  18. | 15 | 00  | LIB N15 |
  19. +----+-----+---------+


 
SID = id parent
--> le parent de LIB N06 c'est LIB N03
 
Comment récupérer tous les parents d'un record ?
--> pour récupérer tous les parents de LIB06, comment faire ?
 
Avoir ceci dans le recordset: (pour LIB06 et tous ses parents)

Code :
  1. +---------+
  2. | LIBelle |
  3. +---------+
  4. | LIB N06 |
  5. | LIB N03 |
  6. | LIB N02 |
  7. | LIB N01 |
  8. +---------+


 
Je ne sais pas si c'est possible de faire ceci en une seule requete SQL mais perso je n'y arrive pas.
Donc si cela est possible, quelqu'un peut me mettre sur la piste svp ?
 
D'avance merci pour votre aide...

mood
Publicité
Posté le 23-03-2006 à 14:41:39  profilanswer
 

n°1331121
dlaumor
Posté le 23-03-2006 à 15:45:38  profilanswer
 

J'ai pas les moyens de tester, mais ca ne me parait pas possible en une seule requete.
 
Le plus simple c'est de l'avoir en ligne (avec 4 colonnes) mais je ne pense pas que ça soit ce que tu recherches ?
Et le problème de cette solution est qu'il faut que tu fixes le nombre de colonnes alors que j'imagine que le nombre de parents n'est pas toujours le même ?
 

n°1331123
imnotgood
Posté le 23-03-2006 à 15:48:37  profilanswer
 

Le faire en plusieurs requete SQL c'est sans problème, mais je pense que si il y a beaucoup de parents, ca deviendra vite lourd.
 
Oui le nombre de parents est indéfini, il peut y en avoir 3 comme 50.
 
La solution serait de pecher l'idscat du 6 pour aller rechercher l'idscat du parent, si différent de 0 on prend l'idscat du parent pour aller chercher son pere et ainsi de suite ;)
 
Merci quand même...

n°1331125
dlaumor
Posté le 23-03-2006 à 15:51:04  profilanswer
 

En en passant par une procédure ? tu pourras faire tes conditions.

n°1331396
Beegee
Posté le 23-03-2006 à 22:48:32  profilanswer
 

C'est avec mySql ? SQL Server ? Oracle ?
 
Avec Oracle on peut faire des requêtes récursives donc c'est possible et simple, pour les autres je les connais moins ...

n°1331527
dlaumor
Posté le 24-03-2006 à 10:57:35  profilanswer
 

Beegee a écrit :

C'est avec mySql ? SQL Server ? Oracle ?
 
Avec Oracle on peut faire des requêtes récursives donc c'est possible et simple, pour les autres je les connais moins ...


 
 
Ca m'intéresse de voir comment tu fais avec Oracle. merci

n°1331532
dlaumor
Posté le 24-03-2006 à 11:02:31  profilanswer
 

dlaumor a écrit :

Ca m'intéresse de voir comment tu fais avec Oracle. merci


 
J'ai trouvé en cherchant un peu un truc du genre ?
 


      SELECT LIbelle
      FROM MA_TABLE
      STAR WITH SID = 0
      CONNECT BY PRIOR ID = SID


 
C'est bien cool ca, j'auria appris un truc

n°1331536
Beegee
Posté le 24-03-2006 à 11:08:36  profilanswer
 

Code :
  1. DROP TABLE maTable;
  2. CREATE TABLE maTable
  3. (ID VARCHAR2(10),
  4. SID VARCHAR2(10),
  5. LIBELLE VARCHAR2(100));
  6. INSERT INTO maTable VALUES ('01', '00', 'LIB N01');
  7. INSERT INTO maTable VALUES ('02', '01', 'LIB N02');
  8. INSERT INTO maTable VALUES ('03', '02', 'LIB N03');
  9. INSERT INTO maTable VALUES ('04', '00', 'LIB N04');
  10. INSERT INTO maTable VALUES ('05', '00', 'LIB N05');
  11. INSERT INTO maTable VALUES ('06', '03', 'LIB N06');
  12. INSERT INTO maTable VALUES ('07', '00', 'LIB N07');
  13. INSERT INTO maTable VALUES ('08', '00', 'LIB N08');
  14. INSERT INTO maTable VALUES ('09', '00', 'LIB N09');
  15. INSERT INTO maTable VALUES ('10', '00', 'LIB N10');
  16. INSERT INTO maTable VALUES ('11', '09', 'LIB N11');
  17. INSERT INTO maTable VALUES ('12', '00', 'LIB N12');
  18. INSERT INTO maTable VALUES ('13', '01', 'LIB N13');
  19. INSERT INTO maTable VALUES ('14', '12', 'LIB N14');
  20. INSERT INTO maTable VALUES ('15', '00', 'LIB N15');
  21. COMMIT;
  22. SELECT libelle FROM maTable
  23. CONNECT BY PRIOR SID = ID
  24. START WITH libelle = 'LIB N06';

n°1331743
dlaumor
Posté le 24-03-2006 à 14:32:51  profilanswer
 

merci ;)


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

  Requete SQL ?

 

Sujets relatifs
[Oracle 9i]Export résultat de requête SQL vers fichier XML?[MySQL] Requete SQL pour supprimer des enregistrements identiques
requete SQL avec VB[Résolu] Requête SQL - doublons oui mais ..
requête SQL dans un formulairerequête SQL dans un formulaire
[SQL] Requête multi-tables + DISTINCT ...[SQL] Requête pour gestion d'un forum
[Sql] Besoin d'aide pour une requête ( simple pourtant ... ) [résolu]Erreur SQL 1064 : Requête imbriquée avec jointure !!!
Plus de sujets relatifs à : Requete SQL ?


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