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

 


Dernière réponse
Sujet : arborescence en SQL
cthulhu 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:

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
cthulhu 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:
cthulhu ok, merci, je vous tient au courant...
wouatouwouatou 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...
cthulhu 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="";
wouatouwouatou 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:
seblamb 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]
cthulhu

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

cthulhu

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

seblamb 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
fabd

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:

fabd Bah tjrs pas :pt1cable:  
Mais pkoi ne pas creer une vue avec seulement les champs que tu veux garder dans ton select ?
thegti 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 !
cthulhu 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?
fabd On dirai les ennoncés de mon prof d'info.
Désolé, mais g rien compris...  :sarcastic:
cthulhu je dois integre ces requetes dans un prog en java... mais je ne peux utiliser que des statement, aucun preparestatement...as tu une idee?
wouatouwouatou 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...
cthulhu 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]


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)