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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [postgreSQL8.2] Update multi-tables

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[postgreSQL8.2] Update multi-tables

n°1577645
simogeo
j'ai jamais tué de chats, ...
Posté le 21-06-2007 à 14:25:29  profilanswer
 

Salut,
 
J'introduis le support de PostgreSQL sur une application qui tourne initialement avec MySQL
 
j'ai la requête suivante, pour MySQL :

Code :
  1. UPDATE sdi_info, sdi_value SET sdii_statut='E', sdiv_statut='E' WHERE sdii_theme=6 AND sdiv_sdi_info=sdii_id;


 
Il est possible de faire 2 requêtes, mais je voudrai la porter sous cette forme condensée, sous PostgreSQL.
Vous avez une idée?
 
merci  [:john keats]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
mood
Publicité
Posté le 21-06-2007 à 14:25:29  profilanswer
 

n°1577716
MagicBuzz
Posté le 21-06-2007 à 16:44:37  profilanswer
 

1/ Ca me semble étrange d'avoir la même propriété à deux niveaux distincts d'une arborescence.
2/ C'est faisable avec trigger si la règle "les fils prennent la même valeur que celle du père si ce dernier change de valeur" est systématiquement vérifiée

n°1577990
simogeo
j'ai jamais tué de chats, ...
Posté le 22-06-2007 à 13:11:26  profilanswer
 


aucun  ;)  
 
je me renseigne  [:john keats]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°1578047
simogeo
j'ai jamais tué de chats, ...
Posté le 22-06-2007 à 14:59:16  profilanswer
 


 
 ca m'est assez familier [:john keats]  
 
 
[:itm]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°1578050
MagicBuzz
Posté le 22-06-2007 à 15:04:27  profilanswer
 

un trigger est effectivement une procédure qui va s'exécuter au moment où on fait certaines actions dans la base.
 
les performances sont au contraire très bonnes, à condition de ne pas en abuser.
 
a noter qu'un trigger  s'effectue dans une micro transaction, ce qui permet de garantir que tout s'est bien passé à la fois pour la requête qui l'a déclenché, tout comme l'intégralité des actions qu'il aura initié, et ceci dès la fin de la requête initiale : c'est donc insécable

n°1578775
simogeo
j'ai jamais tué de chats, ...
Posté le 25-06-2007 à 12:52:48  profilanswer
 

salut, j'ai un autre petit souci .....  [:john keats]  
 

Code :
  1. SELECT I.sdii_name, V.sdiv_id, I.sdii_id, I.sdii_frequency, MAX( sdiv_date_published ) AS datep,
  2. COUNT( sdiv_date_published ) , S.scale_denomination, S.scale_id
  3. FROM sdi_value AS V
  4. LEFT OUTER JOIN sdi_info AS I ON V.sdiv_sdi_info = I.sdii_id
  5. LEFT OUTER JOIN scale AS S ON V.sdiv_scale = S.scale_id
  6. WHERE sdiv_statut <> 'E' AND sdii_statut <> 'E' AND I.sdii_frequency<>0
  7. AND S.scale_statut <> 'E' GROUP BY I.sdii_name, S.scale_denomination, V.sdiv_id, I.sdii_id, I.sdii_frequency, S.scale_id
  8. HAVING (MAX(V.sdiv_date_published) + interval '6 day') < NOW()ORDER BY S.scale_id;


 
Ceci fonctionne correctement ...
Mais je veux que l'intervale soit dynamique, issu d'un champs de la table.
 

Code :
  1. SELECT I.sdii_name, V.sdiv_id, I.sdii_id, I.sdii_frequency, MAX( sdiv_date_published ) AS datep,
  2. COUNT( sdiv_date_published ) , S.scale_denomination, S.scale_id
  3. FROM sdi_value AS V
  4. LEFT OUTER JOIN sdi_info AS I ON V.sdiv_sdi_info = I.sdii_id
  5. LEFT OUTER JOIN scale AS S ON V.sdiv_scale = S.scale_id
  6. WHERE sdiv_statut <> 'E' AND sdii_statut <> 'E' AND I.sdii_frequency<>0
  7. AND S.scale_statut <> 'E' GROUP BY I.sdii_name, S.scale_denomination, V.sdiv_id, I.sdii_id, I.sdii_frequency, S.scale_id
  8. HAVING (MAX(V.sdiv_date_published) + interval I.sdii_frequency) < NOW()ORDER BY S.scale_id;


 
et la, ca fonctionne, plus ... j'ai essayé un ajoutant des simples quotes, doubles quotes .. marche pas! ..  
 
 
j'ai aussi essayé la concatention .... :

Code :
  1. + interval I.sdii_frequency || ' day'


 
pas mieux  
 
 
une idée? merci  [:john keats]  


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°1578836
simogeo
j'ai jamais tué de chats, ...
Posté le 25-06-2007 à 14:25:52  profilanswer
 

I.sdii_frequency renvoie un entier que je concatene a day pour gerer mon interval.... peut-etre qu'il faut echapper ou faire un truc spécial avec le nom du champ mais je ne vois pas quoi ....


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°1578859
simogeo
j'ai jamais tué de chats, ...
Posté le 25-06-2007 à 14:57:47  profilanswer
 

nan, ca n'a pas d'importance...  
 
Je peux le gérer en PHP mais c'est possible de le faire avec la syntaxe SQL et c'est plus propre ... c'est un truc tout con .... quelqu'un ici doit savoir ca! :D
 
enfin merci, hein!!


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°1578914
Taz
bisounours-codeur
Posté le 25-06-2007 à 16:00:33  profilanswer
 

simogeo a écrit :

Salut,
 
J'introduis le support de PostgreSQL sur une application qui tourne initialement avec MySQL
 
j'ai la requête suivante, pour MySQL :

Code :
  1. UPDATE sdi_info, sdi_value SET sdii_statut='E', sdiv_statut='E' WHERE sdii_theme=6 AND sdiv_sdi_info=sdii_id;


 
Il est possible de faire 2 requêtes, mais je voudrai la porter sous cette forme condensée, sous PostgreSQL.
Vous avez une idée?
 
merci  [:john keats]

fais une transaction quand même. c'est du SQL standard ça d'ailleurs ?

n°1578917
Taz
bisounours-codeur
Posté le 25-06-2007 à 16:04:53  profilanswer
 

simogeo a écrit :

I.sdii_frequency renvoie un entier que je concatene a day pour gerer mon interval.... peut-etre qu'il faut echapper ou faire un truc spécial avec le nom du champ mais je ne vois pas quoi ....


* interval '1 day'
 
MAX(V.sdiv_date_published) + I.sdii_frequency * interval '1 day'

mood
Publicité
Posté le 25-06-2007 à 16:04:53  profilanswer
 

n°1579355
simogeo
j'ai jamais tué de chats, ...
Posté le 26-06-2007 à 14:40:36  profilanswer
 

Taz a écrit :

fais une transaction quand même. c'est du SQL standard ça d'ailleurs ?


 
je pense pas non .... C'est MySQL compliant  [:john keats] . Mais j'ai décidé de scinder les requetes
 

Taz a écrit :

* interval '1 day'
 
MAX(V.sdiv_date_published) + I.sdii_frequency * interval '1 day'


 
ca fonctionne  [:cyriadis] . Merci  [:john keats]  


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence

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

  [postgreSQL8.2] Update multi-tables

 

Sujets relatifs
Réunion de deux tables[Access] update de toute les colonnes si...
INSERT et UPDATE dans la même page : recommandé ?[MySQL 5] remettre une valeur par défaut avec UPDATE
[RESOLU] Erreur 1452 : Cannot add or update a child rowAide requete oracle, sum sur 2 tables différentes
[SQL] Suppression multi tablesInserer 2 valeurs dans 2 tables differentes
suppression plusieurs tables avec jointure 
Plus de sujets relatifs à : [postgreSQL8.2] Update multi-tables


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