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

  FORUM HardWare.fr
  Programmation

  arborescence en SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

arborescence en SQL

n°21468
cthulhu
Merci, merci...
Posté le 30-03-2001 à 12:15:17  profilanswer
 

bonjour voila lenonce du probleme:
 
une table contenant des categories de produits.
cette table avec un code d'activation mis a true si un produit correspondant a cette categorie est lui meme actif (dans une autre table)
Il est simple d'activer les categorie en fanction des produits actif en faisant une requete du genre:
update CAT inner join PRD on CAT.CODE=PRD.CATCODE set CAT.ACTIF=1 where PRD.ACTIF=1
 
le probleme est quil'existe une colonne permettant de créer une structure arborescente au sein des categorie.
genre:
 
COD                 MOTHER                   OK          des
1                                                     0          livre
2                                                     0        crayons    
3                      1                              0          INFO
4                      3                              1          SQL
 
voila, dans la logique des choses la categorie 4 étant active, toutes les categorie mere doivent etre activée pour obtenir:
 
COD                 MOTHER                   OK          des
1                                                     1          livre
2                                                     0        crayons    
3                      1                              1          INFO
4                      3                              1          SQL
 
question: creer une requete SQL generant cette mise à jour....
merci a ceux qui pourront maider

 

[edit]--Message édité par Cthulhu--[/edit]


---------------
[code]
mood
Publicité
Posté le 30-03-2001 à 12:15:17  profilanswer
 

n°21474
wouatouwou​atou
Posté le 30-03-2001 à 12:29:01  profilanswer
 

jsuis pas un pro du sql mais je crois pas ke ce soit possible en sql pure...
Vaut mieux passer par un chtit curseur a mon avis...

n°21476
cthulhu
Merci, merci...
Posté le 30-03-2001 à 12:31:29  profilanswer
 

je dois integre ces requetes dans un prog en java... mais je ne peux utiliser que des statement, aucun preparestatement...as tu une idee?

n°21478
fabd
Posté le 30-03-2001 à 12:31:58  profilanswer
 

On dirai les ennoncés de mon prof d'info.
Désolé, mais g rien compris...  :sarcastic:

n°21484
cthulhu
Merci, merci...
Posté le 30-03-2001 à 12:38:36  profilanswer
 

c pas evident evident ni a comprendre ni a explique par ecrit, mais en gros, imagine que lors dune mise a jour de la BDD il faille activer les categorie uniquement pour des produits qui sont actifs (a quoi sert dactiver une categorie si aucun produit ne lui correspond) mais le probleme c que la categorie peut etre une subordonnee dune autre genr : livre=>informatique=>java
si on active la categorie "java", il faut egalement activer les deux autres... tu comprends mieux?

n°21486
thegti
La constipation se soigne ...
Posté le 30-03-2001 à 12:43:38  profilanswer
 

Franchement c'est pas bien compliqué
Enfin si j'ai bien tout compris :)
 
Mais par égard, a comment tu nous a fait chier avec ton post de merde avec l'énigme à la noix que tu te fous de notres gueule, je répondrait pas !

n°21487
fabd
Posté le 30-03-2001 à 12:43:59  profilanswer
 

Bah tjrs pas :pt1cable:  
Mais pkoi ne pas creer une vue avec seulement les champs que tu veux garder dans ton select ?

n°21488
fabd
Posté le 30-03-2001 à 12:44:37  profilanswer
 

thegti a écrit a écrit :

Franchement c'est pas bien compliqué
Enfin si j'ai bien tout compris :)
 
Mais par égard, a comment tu nous a fait chier avec ton post de merde avec l'énigme à la noix que tu te fous de notres gueule, je répondrait pas !




 
 
 
 :lol:  :lol:  :lol:

n°21489
seblamb
Posté le 30-03-2001 à 12:48:04  profilanswer
 

Les SQL ne gère pas les aborescence et donc les mises à jour en cascade.
En fait tu dois faire une sous requete pas niveau d'aborecence.  
Si ton niveau d'aborescence en inconnu tu est obligé d'intégré ta
requete dans un script

n°21491
cthulhu
Merci, merci...
Posté le 30-03-2001 à 12:48:37  profilanswer
 

thegti a écrit a écrit :

Franchement c'est pas bien compliqué
Enfin si j'ai bien tout compris :)
 
Mais par égard, a comment tu nous a fait chier avec ton post de merde avec l'énigme à la noix que tu te fous de notres gueule, je répondrait pas !




 
salut thegti, je voulais juste te signaler quen fait, bowfinger est un collegue a moi et que ce con a voulu me pourir la vie en se faisant passer pour moi... je peux tassurer que le post de lenigme ne viens pas de moi. sinon le message "cthulhu et bowfinger ne font quun" ne serait pas venu de bowfinger mais de Cthulhu

mood
Publicité
Posté le 30-03-2001 à 12:48:37  profilanswer
 

n°21492
cthulhu
Merci, merci...
Posté le 30-03-2001 à 12:50:05  profilanswer
 

seblamb a écrit a écrit :

Les SQL ne gère pas les aborescence et donc les mises à jour en cascade.
En fait tu dois faire une sous requete pas niveau d'aborecence.  
Si ton niveau d'aborescence en inconnu tu est obligé d'intégré ta
requete dans un script




exact, je pense comme toi que c cela quil faut faire, mais je ne suis pas un pro sql et je ne aprviens pas a compiler ma requete de mise a jour avec une sous requete...
pourrais tu me donner un exemple de code stp

n°21507
seblamb
Posté le 30-03-2001 à 13:16:51  profilanswer
 

Deja faut faire une requete qui trouve les catégories à modifier
SELECT CODE FROM CAT WHERE MOTHER IN  
   (SELECT CODE FROM CAT WHERE MOTHER IN  
                (SELECT CODE FROM CAT, PRD  
                 WHERE PRD.ACTIF=1 AND CAT.CODE=PRD.CATCODE ))
 
la ligne "SELECT CODE FROM CAT WHERE MOTHER IN " doit être  
reproduite autant de fois qu'il y a de niveau dans l'arborescence
et puis ensuite :  
UPDATE CAT SET ACTIF=1 WHERE CODE IN [la requete precedente]

n°21508
wouatouwou​atou
Posté le 30-03-2001 à 13:27:37  profilanswer
 

fabd> i veut faire un truc du genre:
  a depend de b
  b depend de c
  c depend de d
  d depend ... depend de n
 
et si n change bah a,b,c,d,.. changent aussi
Enfin, c ce ke jai compris. :crazy:
 
Mais a mon avis ... c du pseudo-recursif (ou meme pure recursif) ke tu dois faire... et pi fo pas se baser sur le fait ke les nivos de ton arborescence sont connues car d'apres ce ke jai compris... ta table peut grandir a tout moment et donc tes nivos aussi ...  
 
Moi, je passerai par...
 
P.S: thegti> c vrai ke ti va fort la !! :sarcastic:

n°21516
cthulhu
Merci, merci...
Posté le 30-03-2001 à 14:04:22  profilanswer
 

merci les gars, vous avez tout les deux raison, en theorie je devrais obtenir une pseudo recursive car en effet le nombre de etage ne peut etre connu a lavance car je ne peux pas utiliser de requetes paramétrées... par contre qqn mas dit que la solution au probleme était d'utiliser une boucle du type :
 
while(stat.executeUpdate(sql)!=0)
{}
 
mais ce qui me pose probleme c la ligne au dessus:
sql="";

n°21517
wouatouwou​atou
Posté le 30-03-2001 à 14:11:23  profilanswer
 

le mieux serait de passer par un trigger.. mais encore fo til ke tu puisses en faire.... car il fofrai ke tai acces au sgbd...
et si tu y a acces, bah... fais une proc. stoc...  
Efin, je pense ke c kom ca kil fodrai faire...

n°21518
cthulhu
Merci, merci...
Posté le 30-03-2001 à 14:12:52  profilanswer
 

ok, merci, je vous tient au courant...

n°21520
cthulhu
Merci, merci...
Posté le 30-03-2001 à 14:56:17  profilanswer
 

merci les gars, the gti avait raison ct pas tellement compliqué,il suffisait de chopper la philosophie des sous-requètes...
la solution qui sera conservee est:
 
 
sql="update set ACTIF=1 where CODE in (select MOTHER from CAT where ACTIF=1 and (MOTHER<>'' and not MOTHER is null))and ACTIF=0";
stat=con.createStatement();
while(stat.executeUpdate()){
 
}
merci a tout ceux qui mont apporter leur aide.:hello:


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

  arborescence en SQL

 

Sujets relatifs
Interbase + PHP4 mes queries me retournent des dyn SQL errors HELP ME[SQL Server 7] MSmerge_contents
pl/SQL : Afficher un truc com un println()[SQL] Reverse Engineering avec AMC Données
SQL & ASP[SQL] Postgres vs MySQL
Une petite question sur une requete SQLINDEXATION - SQL - REQUETES SPECIALES !!
Est ce ke kkun s'y connait en SQL/C ou SQL Dynamique ?[ASP] [SQL] comment faire un pack sur une base DBF ??
Plus de sujets relatifs à : arborescence en SQL


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