[RESOLU] Mise à jour d'une table SQL

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Mise à jour d'une table SQL

Re: Mise à jour d'une table SQL

par Ryle » 12 févr. 2021, 17:08

Salutations !

Ta requête initiale contenant un create table, il te faut obligatoirement la remanier pour distinguer la création de la table (si tu ne veux pas la supprimer à chaque fois) et son alimentation.

Si tu fais un truncate pour vider la table à chaque fois, tu ne peux pas faire d'update puisqu'il n'y aura d'enregistrements à mettre à jour. Ce sont des inserts qu'il faut exécuter. Et tu peux facilement faire un insert à partir d'un select :)
INSERT INTO comptage.tab_comptage (champ1, champ2....)
  SELECT champ1, champ2....  FROM ....

Mise à jour d'une table SQL

par Rob7502 » 10 févr. 2021, 13:15

Bonjour,

J'ai créé une table via une requête sur Pgadmin. J'aimerai pouvoir la mettre à jour (via exactement la même requête) sans avoir à recréer la table en l'écrasant à chaque fois (car la table est utilisée dans des applications).

Pour cela je voudrais utiliser un Truncate pour vider puis un Update pour la remplir mais ma requête de base étant un peu complexe, je n'arrive pas à adapter ce Update pour qu'il fonctionne (pas possible de mettre de Group By ou de row_number notamment)

Voici le code utilisé qui créé la table et que je veux adapter à un Update :

Code : Tout sélectionner

CREATE TABLE comptage.tab_comptage AS SELECT row_number() OVER ()::integer AS objectid, centrale.libelle AS nom_voie, publication.id_centrale, publication.code_centrale, publication.id_canal, publication.code_canal, publication.libelle_groupage, date_part('year'::text, publication.horodate)::text AS annee, publication.horodate, publication.descriptif_periode, sum(( SELECT publication.valeur::integer AS valeur WHERE publication.type_mesure::text = 'HP_JOHVS_matin'::text)) AS hp_johvs_matin, sum(( SELECT publication.valeur::integer AS valeur WHERE publication.type_mesure::text = 'HP_JOHVS_soir'::text)) AS hp_johvs_soir, sum(( SELECT publication.valeur::integer AS valeur WHERE publication.type_mesure::text = 'MJA_JO'::text)) AS mja_jo, sum(( SELECT publication.valeur::integer AS valeur WHERE publication.type_mesure::text = 'MJA_TCJ'::text)) AS mja_tcj, sum(( SELECT publication.valeur::integer AS valeur WHERE publication.type_mesure::text = 'TIR_TCJ'::text)) AS tir_tcj, sum(( SELECT publication.valeur::integer AS valeur WHERE publication.type_mesure::text = 'V85MA_TCJ'::text)) AS v85ma_tcj, sum(( SELECT publication.valeur::integer AS valeur WHERE publication.type_mesure::text = 'VTMA_TCJ'::text)) AS vtma_tcj, sum(( SELECT publication.valeur::integer AS valeur WHERE publication.type_mesure::text = 'MJA_PL_TCJ'::text)) AS mja_pl_tcj FROM publication, centrale WHERE publication.id_centrale = centrale.id_centrale GROUP BY publication.id_centrale, publication.code_centrale, publication.id_canal, publication.code_canal, publication.libelle_groupage, publication.horodate, publication.descriptif_periode, centrale.libelle;
Merci d'avance