Vous n'êtes pas identifié(e).
non vous n'avez pas à vous excusé , je ne prends pas en mal , quand on est à la recherche du savoir on se plie ;
je suis assez étonné aussi par le résultat , mais peut être , comme je joins la vue calculée à la vue qui a permis à son calcul, l'erreur doit se trouver à ce niveau , car , si je crée une table simple de 6 enregistrement et appliquer la requête , il renvoie 6 enregistrement comme vous l'avez dit .
je suis encore désolé
merci pour vos assistances
j'ai mis de la virgule entre les valeurs dans le fichier comme vous l'avez suggeré , mais il marche pas et le message d'erreur reste le même "pas de données pour la colonne COMMUNE ".
"04001" ,"Aiglun", "100" ,"AlpesSud" ,"101", "Digne-les-bains"
"04004" ,"Allemagne-en-Provence" ,"100" "AlpesSud" ,"102", "Manosque""04005", "Allons" ,"100","AlpesSud" ,"101", "Digne-les-bains"
"04006","Allos" ,"100", "AlpesSud" ,"101", "Digne-les-bains"
"04007","Angles" ,"100","AlpesSud", "101", "Digne-les-bains"
"04008" ,"Annot","100", "AlpesSud" ,"101", "Digne-les-bains"
aidez svp si possible car je suis bloqué pour ça depuis certains moment .
merci d'avance
bonjour tout le monde
je veux importer le fichier suivant dans ma table "importer" , du nom de champtable.csv.
"04001" "Aiglun" "100" "AlpesSud" "101" "Digne-les-bains"
"04004" "Allemagne-en-Provence" "100" "AlpesSud" "102" "Manosque""04005" "Allons" "100" "AlpesSud" "101" "Digne-les-bains"
"04006" "Allos" "100" "AlpesSud" "101" "Digne-les-bains"
"04007" "Angles" "100" "AlpesSud" "101" "Digne-les-bains"
"04008" "Annot" "100" "AlpesSud" "101" "Digne-les-bains"
voici la structure de ma table :
create table importer (
codeinse text,commune text,champ1 text ,champ2 text ,champ3 text,champ4 text );
ma commande copy
copy importer ("codeinse" ",commune" ,"champ1" ,"champ2" ,"champ3" ,"champ4") FROM 'C:/champ/Champtable.csv' with CSV;
quand j'execute il me renvoie le message d'erreur suivant que je comprenne (pas de données pour la colonne "commune") mais que j'arrive toujours pas résoudre ;
ERROR: missing data for column "commune"
État SQL :22P04
Contexte : COPY importer, line 1: ""
merci de votre aide
bonjour
il marche bien cette requête de création de la vue car il renvoi le résultat désireux , mais parcontre il renvoie 36 enregistrements étant donné que j'en ai 6 dans ma table , j'ai l'impression qu'il multiplie les 6 enregistrements par 6 pour en faire à 36 ; aidez moi s'il vous plait .
voici la requête :
CREATE VIEW mavue (colonne1) AS
SELECT
CASE WHEN a=1 THEN 1
ELSE 0
END
FROM matable;
bonjour
merci j'ai résolu le problème grâce à la fonction dont vous m'avez indiqué :
COALESCE
bonjour tout le monde
je veux une somme qui doit venir des deux vues suivantes :
create view vue1 (colonne1) as select colonneA from table 1 ;
cette vue amène 150
et
create view vue2 (colonne2) as select colonneB from table2 ;
cette vue amène un champ vide , car la colonneB est aussi vide .
donc si je fais
create view vuesomme (somme) as select sum((colonne1)+(colonne2)) from vue1 natural join vue2 ;
il m'amène un champ vide , il considère pas les 150;
par contre si je récrée les 2 vues sur deux champs qui contiennent tous une valeur réelle , il donne la somme réelle ;
aisez moi s'il vous plait
merci beaucoup à vous tous ; il fait mon affaire .
très sympa
bonjour
merci d'abord pour votre assistance.
c'est à dire je veux un truc comme ça :
colonne A de ma table ={1, 3,7,9,0,1,5,1,6,1}
si je fais
create view mavue (colonne1) as select colonne2 from matable machin ...............;
et en plus si je fais
select * from mavue;
je veux avoir colonne1={1,0,0,0,0,1,0,1,0,1}
partout où y avait 1 dans la colonne2 de ma table reste à 1 , mais partout où y avait autre valeur sont transformé à 0.
merci d'avance
votre exemple est vraiment parlant , mais malhereusement il traite pas trop ma question;
je ne veux avoir dans ma colonne résulat que des 1 et des 0 selon que la colonne sur laquelle porte la vue, contient 1 ou autre valeur . 1 pour les lignes qui contiennent 1 et 0 pour les lignes qui contiennent autre valeur.
j'ai besoin de votre aide encore si possibles s'il vous plait
bonjour à tous
je veux creer une vue qui n'amène que 1 et 0 comme valeur ; 1 pour toutes les lignes où la colonne concernée de la table contient 1 et 0 dans tous les autres cas ,pour toutes les lignes de la table . c'est à dire , ma vue portera sur une colonne A de ma table , elle amènera 1 pour toutes les lignes où A = 1 et 0 pour toutes autres valeurs contenant A . j'ai fait assez de tentative pour cette requette , car j'ai tenté d'utiliser "si" , mais ça marche pas ; aidez moi s'il vous plait .
merci d'avance
par exemple ma vue1 m'envoie une colonne contenant le chiffre 10 et ma vue2 m'envoie une autre colonne contenant un chiffre 20 ,
je veux maintenant une vue qui calcule la somme des deux , c'est à dire , la vuesomme envoie 30; j'espère être claire .
une deuxième question s'il vous plait :
je veux faire une autre vue qui envoie un champ "AUTRES" contenant les codes géographiques ne commençant pas par un nombre du deux chiffres du lot suivant : {'06', '05', '04', '13', '83', '84'}; c'est à dire si le code géographique ne commence pas par l'un de ces 2 chiffres , le champs "AUTRE" envoie le code geo en question ; et j'ai un autre champ de ma table qui contient tous les codes géographiques .
merci de votre aide.
bonjour tout le monde
comme faire la somme des vues s'il vous plait ? par exemple :
create view mavue1 (col1) as select col1 from matable1 ;
et
create view mavue2 (col2) as select col2 from matable2 ;
merci d'avance de votre aide
vous êtes formidable , je voulais exactement le "and" au lieu de "or" , mais je m'etais unpeu mal exprimé ,d'ailleurs je réformule bien ainsi :
je fais une vue qui doit faire la somme des éléments d'une colonne "toto" en considerant "1" comme valeur de la colonne si ces conditions sont remplis au même moment : col1 IN (24,28) , col2 = "Z" , col3>=1 AND col5<=8 , col4 = 'Z' et considerer "toto" comme "0" au cas où une de ces conditions est fausse à fortiori toutes , cela pour toutes les lignes de ma table et me retourne "somme" , c'est à dire qu'il test toutes les lignes de ma table avant de rétourner somme .
merci beaucoup d'avance et remercie pour la première aide ;
bonjour tout le monde
je veux créer une vue qui doit calculer la somme des valeurs d'une colonne si les conditions dans la clause WHERE sont bien remplis , j'ai procédé comme ça ;
create view mavue (col1,col2) as select col1,sum(col2) from matable where col 3 = {24 ou 28} or col4= "Z" or col5 =[1..8 ] or col6="Z" ;
il plante.
comme vous remarquez certaines colonnes doivent prendre leurs valeurs dans un ensemble dans la clause where ; c'est à dire je dois comparer mes colonnes de la clause where à cet intervalle là:
24Z01Z à 24Z08Z ou 28Z01Z à 28Z08Z
j'ai besoin d'aide svp
bonjour tout le monde
je dois créer une vue dans ma base de donnée qui contient quelques tables , dont 4 sont liées entre elles ; certaines données de la vue doivent venir directement de ces 4 tables , mais par contre d'autres doivent êtres calculées avec les champs d'autres tables de la base et les champs de ces 4 tables . je n'ai pas une idée de la structure de cette vue ( pas la syntaxe ) qui m'a l'air unpeu compliquée et en plus j'en ai jamais crée. aidez moi s'il vous plait .
merci d'avance de votre aide
s'il vous plait j'ai pas trop compris , si vous pouvez être unpeu explicite
en plus je travaille en local encore , tout est sur une suele machine
merci pour la premiere aide
j'essaie d'être plus claire , c'est comme ça que j'ai procedé pour créer ma clé primaire dans la table A.
ALTER TABLE tableA ADD CONSTRAINT la_table_pkey PRIMARY KEY (champ1, champ2,champ3);
et dans une fonction jai mis les valeurs de ces trois champs dans un champs unique nommé id_rsa , mais quand je fais :
alter TABLE tableB add constraint cle_etrangere foreign key (colonneB) references tableA (id_rsa) on delete cascade;
:
j'ai ce message d'erreur :
NOTICE: constraint cle_etrangère_diag on table diagnostique depends on table rsa
NOTICE: constraint cle_etrangère_um on table unite_medicale depends on table rsa
NOTICE: constraint cle_etrangère on table acte depends on table rsaERROR: cannot drop table rsa because other objects depend on it
État SQL :2BP01
Astuce : Use DROP ... CASCADE to drop the dependent objects too.
merci pour votre assistance
bonjour tout le monde
j'ai une table A qui contient une clé primaire composée de la concatenation des trois champs de cette table ; et 3 autres tables B,C,D dont leurs differentes clés primaires composés d'un seuls champs doivent referencer la clé primaire de la table A ; comment faire cette liaison ? car ma grande difficulté , c'est la clé est composé , donc comment lier cette clé de trois champs aux clés d'un seul champs des autres tables ?
merci de votre aide
je me suis déconnecté et réconnecté , mais c'est la même chose ;
merci de la première aide si possible j'en sollicite encore
bonjour
quand j'execute ma requete , ma table apparait avec les bons resultats de la requete mais les noms des champs n'apparaissent pas au niveau des entêtes des colonnes , je ne sais pas si j'ai fait une mauvaise manipulation ou quoi , car c'etait pas comme ça au debut ;
merci de votre aide
merci de ton aide mais jai dejà fais cela , ya plantage toujours ; par exemple regarder ce code sil vous plait ; jai cinq fctions ici qui sont : importer_rsa , importer_um, importer_diag , importer_acte et importer_pmsi , elle marche toute une à une , mais quand j'appelle dans des boucles de la fonction nommée importer_pmsi les 4 premières , jai un message d'erreur de ce
genre
ERROR: syntax error at or near "importer_um"
État SQL :42601
Contexte : SQL statement in PL/PgSQL function "importer_pmsi" near line 24
voici en quoi resemble mon mes fonctions
CREATE OR REPLACE FUNCTION importer_rsa (donnee text ) RETURNS void AS
$BODY$
DECLAREa character varying(9); b character varying(3); c character varying(10); d character varying(3); e character varying(3); f character varying(2) ; g character varying(2) ; h character varying(1);
i character varying(2) ; j character varying(1) ; k character varying(3) ; l character varying(2) ; m character varying(2) ; n character varying(1) ; o character varying(2); p character varying(1) ;
q character varying(3); r character varying(2) ; s character varying(3) ; t character varying(3) ; u character varying(1) ; v character varying(1) ; w character varying(1) ; x character varying(2) ;
y character varying(4) ; z character varying(1) ; ab character varying(1) ; ac character varying(1); ad character varying(4) ;ae character varying(5) ;af character varying(4) ;ag character varying(2) ;
ah character varying(3) ; ai character varying(4) ; aj character varying(4) ; ak character varying(1) ; al character varying(4) ; am character varying(3) ; an character varying(3) ; ao character varying(3) ;
ap character varying(3) ; aq character varying(2) ; ar character varying(3) ; as character varying(3) ;at character varying(3) ;au character varying(3); av character varying(1) ; aw character varying(3) ;
ax character varying(3); ay character varying(3) ; az character varying(3) ; a1 character varying(3); a2 character varying(3); a3 character varying(3) ; a4 character varying(3); a5 character varying(3) ;
a6 character varying(1) ; a7 character varying(6) ; a8 character varying(6) ; a9 character varying(2) ; a10 character varying(4) ;
begin
a:=substring (donnee from 1 for 9); b:= substring (donnee from 10 for 3); c:= substring (donnee from 13 for 10); d:= substring (donnee from 23 for 3); e:= substring (donnee from 26 for 3); f:= substring (donnee from 29 for 2); g:= substring (donnee from 31 for 2);
h:= substring (donnee from 33 for 1); i:= substring (donnee from 34 for 2); j:= substring (donnee from 36 for 1); k:= substring (donnee from 37 for 3); l:= substring (donnee from 40 for 2); m:= substring (donnee from 42 for 2); n:= substring (donnee from 44 for 1);
o:= substring (donnee from 45 for 2); p:= substring (donnee from 47 for 1); q:= substring (donnee from 48 for 3); r:= substring (donnee from 51 for 2); s:= substring (donnee from 53 for 3); t:= substring (donnee from 56 for 3);
u:= substring (donnee from 59 for 1);
v:= substring (donnee from 60 for 1); W:= substring (donnee from 61 for 1); x:= substring (donnee from 62 for 2); y:= substring (donnee from 64 for 4); z:= substring (donnee from 68 for 1); ab:= substring (donnee from 69 for 1); ac:= substring (donnee from 70 for 1);
ad:= substring(donnee from 71 for 4); ae:= substring(donnee from 75 for 5); af:= substring(donnee from 80 for 4); ag:=substring (donnee from 84 for 2); ah:= substring(donnee from 86 for 3); ai:= substring(donnee from 89 for 4);
aj:= substring (donnee from 93 for 4); ak:= substring(donnee from 97 for 1); al:= substring(donnee from 98 for 4); am:= substring(donnee from 102 for 3); an:= substring(donnee from 105 for 3);ao:= substring(donnee from 108 for 3);
ap:= substring(donnee from 111 for 3); aq:= substring (donnee from 114 for 2);
ar:= substring(donnee from 116 for 3);as:= substring(donnee from 119 for 3); at:= substring(donnee from 122 for 3); au:= substring(donnee from 125 for 3);av:= substring(donnee from 128 for 1); aw:= substring(donnee from 129 for 3); ax:= substring (donnee from 132 for 3);
ay:= substring(donnee from 135 for 3); az:= substring(donnee from 138 for 3);a1:= substring(donnee from 141 for 3); a2:= substring(donnee from 144 for 3); a3:= substring(donnee from 147 for 3); a4:= substring(donnee from 150 for 3); a5:= substring (donnee from 153 for 3);
a6:= substring(donnee from 156 for 1); a7:= substring(donnee from 157 for 6); a8:= substring(donnee from 163 for 6); a9:= substring(donnee from 169 for 2); a10:=substring(donnee from 171 for 4);
INSERT INTO rsa (num_finess, num_vers_rsa, num_index_rsa , num_vers_rssgpe ,num_vers_genrsa, Gpgelu_vers_classif, gpgelu_ghm_Cmd, Gpgelu_ghm_Type ,gpgelu_ghm_Num, gpgelu_ghm_Cplexite,
Gpgelu_code_retour ,Gpgegenrsa_vers_classif ,Gpgegenrsa_ghm_Cmd,gpgegenrsa_ghm_Type,gpgegenrsa_ghm_num , gpgegenrsa_ghm_Cplexite, Gpgegenrsa_code_retour,
nb_rum_rss_orig ,age_en_annee ,age_en_jour, Sexe ,mode_entree_pmsimco ,Provenance ,mois_sortie ,annee_sortie ,mode_sortie_pmsimco, Destination, type_sej,
duree_total_sej_pmsi,code_geog_res,poids_entree,nb_seance ,Igs2 , num_ghs_ghmgenrsa,
nb_jne_sup_bor_extr_haute , sej_inf_bor_extr_basse ,
forfait_dialyse, nb_sup_hem_hseance ,
nb_sup_entr_dia_per_auto_hseance,
nb_sup_entr_dia_per_cont_amb_hseance, nb_sup_entr_hem_hseance ,
nb_seance_avt_sros,
nb_acte_men_ghm24z05z , nb_acte_men_ghm24z06z ,
nb_acte_men_ghm24z07z,
nb_sup_caisson_hyperbare ,type_prest_prelv_org , nb_sup_sra_rean , nb_sup_rea_rean ,
nb_sup_soin_int_prov_rean , nb_sup_stf , nb_sup_ssc , nb_sup_src,nb_sup_nn1 ,nb_sup_nn2 ,nb_sup_nn3,Pge_lit_dedie_soin_pal ,Dp , Dr, nb_diag_ass_sig_rsa, nb_zone_acte_rsa )
values (a, b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,ab,ac,ad,ae,af,ag,ah,
ai,aj,ak,al,am,an,ao, ap,aq,ar,as,at,au,av,aw,ax,ay,az,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10);
return;
END;
$BODY$
LANGUAGE plpgsql ;create or replace function importer_um (donnee text) returns void as --fonction qui importe 1 um dans la table unité_médicale
$BODY$
declare
-- declaration des variables
a character varying(2);
b character varying(3);
c character varying(1);
d character varying(1);
e character varying(2);begin
-- soustraction des sous chaines et leur affectation aux variables
a:= substring (donnee_um from 1 for 2);
b:= substring (donnee_um from 3 for 3);
c:= substring (donnee_um from 6 for 1);
d:= substring (donnee_um from 7 for 1);
e:= substring (donnee_um from 8 for 2);
insert into unite_medicale (type_um , dur_sej_part , val_rea , val_part, position_dp ) values (a, b, c, d, e);END;
$BODY$
LANGUAGE plpgsql ;create or replace function importer_diag (donnee_diag text ) returns void as --fonction qui importe 1 um dans la table unité_médicale
$BODY$
declare -- declaration des variables
liste varchar (6);
begin
-- soustraction des sous chaines et leur affectation aux variables
liste:=substring(donnee_diag from 1 for 6 );insert into diagnostique (liste_code_diagnostique ) values (liste);
return;
END;
$BODY$
LANGUAGE plpgsql ;
create or replace function importer_acte (donnee text) returns void as --fonction qui importe 1 acte dans la table acte
$BODY$
declare -- declaration des variables
a character varying(3);
b character varying(7);
c character varying(1) ;
d character varying(1) ;
e character varying(1);
f character varying(4);
g character varying(1);
h character varying(1);
i character varying(2);begin
-- soustraction des sous chaines et leur affectation aux variables
a:= substring (donnee_acte from 1 for 3);
b:= substring (donnee_acte from 4 for 7);
c:= substring (donnee_acte from 11 for 1);
d:= substring (donnee_acte from 12 for 1);
e:= substring (donnee_acte from 13 for 1);
f:= substring (donnee_acte from 14 for 4);
g:= substring (donnee_acte from 18 for 1);
h:= substring (donnee_acte from 19 for 1);
i:= substring (donnee_acte from 20 for 2);insert into acte (delai_dep_dat_entree ,code_ccam , phase , activite, exten_doc,modificateur,remb_excep,ass_non_prevue,nb_exe_acte ) values (a, b, c, d, e,f,g,h,i);
return;
END;
$BODY$
LANGUAGE plpgsql ;create or replace function importer_pmsi (donnee_pmsi text ) returns varchar as
$BODY$
declare
bloc_rsa character varying(174); --données du rsa
bloc_um character varying(891); --données de l'ensemble des um
bloc_diag character varying(594); --données de l'ensemble des diagnostics
bloc_acte character varying(209979); --données de l'ensemble des actes
nb_um Integer; --nombre de um
nb_diag Integer; --nombre de diagnostics
nb_acte Integer; --nombre d'actes
temp character varying(209979); --variable temporaire
begin
bloc_rsa:=substring(donnee_pmsi from 1 for 174);
nb_um := CAST(substring(donnee_pmsi from 51 for 2) AS Integer); --c'est le nombre de UM
nb_diag := CAST(substring(donnee_pmsi from 169 for 2) AS Integer); -- c'est la nombre de diagnostic
nb_acte := CAST(substring(donnee_pmsi from 171 for 4) AS Integer); --c'est la nombre d'actesbloc_um:=substring(donnee_pmsi from 175 for num_um*9); --tous les blocs de données des um
bloc_diag:=substring(donnee_pmsi from (175+num_um*9) for num_diag*6); --tous les blocs de données des diagnostics
bloc_acte:=substring(donnee_pmsi from (175+num_um*9+num_diag*6) for num_acte*21); --tous les blocs de données des actesPERFORM importer_rsa(bloc_rsa);
for l in 0..nb_um loop
temp:= substring(bloc_um from (l*9+1) for 9)
importer_um(temp);
end loop ;for l in 0..nb_diag loop
temp:= substring(bloc_diag from (l*6+1) for 6)
select importer_diag (temp);
end loop ;for l in 0..nb_acte loop
temp:= substring(bloc_acte from (l*21+1) for 21)
importer_acte(temp);
end loop ;
return varchar;END;
$BODY$
LANGUAGE plpgsql ;select importer_pmsi('01000840721300000000171110021024C30Z0001024C30Z00001033 28 0820068 00018440000000000080290000099990000000000000000000000000000000000000000000000000000000O039 000003 00123DP001JNJD00204 001001JNJD00201 001001DEQP00701 001');
merci beaucoup de votre aide , je galère là
bonjour
comment appel-t-on une fonction en postgresql ? car j'ai ecrit une fonction 'importer_rsa' qui prend en paramètre un text et si l'appel au milieu d'une autre fonction qui prend egalment une chaine , elle plante . je l'appel comme ça : importer_rsa(chaine ici) . aidez moi svp
message d'erreur :
ERROR: syntax error at or near "importer_rsa"
merci de votre aide
oui , mais si on veut que ça soit pas toutes les valeurs des champs1 et de champs 2 , mais plutôt l'association d'une partie de chaque champs , comment on fait svp ?
merci pour la première aide
ok, merci pour cette remarque et ce depacement
bonjour tout le monde
je dois découper chaque ligne de ce fichier dans mes tables (3) en tenant compte des tailles des champs ; mais le remplissage des deux tables dépend des deux champs se trouvant dans l'autre table ; si la valeur de ces deux champs sont nulles , on rempli plus les deux tables , mais si elles sont egales à 2 par exemple , on rempli deux fois les deux tables en respectant la taille de leurs champs par un découpage , ainsi de suite ;
en plus la valeur de ces deux variables peut varier d'une ligne fichier à un autre .
ma question :
il est bien de passer par une requette sql ou par une fonction pour faire ce genre de travaille ? donnez moi un exemple svp dans le cas choisi .
voici l'exemple des lignes de fichier à traiter 6 lignes :
merci beaucoup de votre aide
01000840721300000000171110021024C30Z0001024C30Z00001033 28 0820068 00018440000000000080290000099990000000000000000000000000000000000000000000000000000000O039 000003 00123DP001JNJD00204 001001JNJD00201 001001DEQP00701 001
01000840721300000005921110010904M13Z0000904M13Z00001068 18 0220068 00138441000000000011200000099990000000000000000000000000000000000000000000000000000000J960 020003 01323DPC349 J439 000ZCQK00201 001006ZBQK00201 001000ZBQK00201 001
01000840721300000013761110031020Z04Z0001020Z04Z00001030 28 1220068 00028334000000000072520000199990000000000000000000000000000000000000000000000000000000Z502 F102 010002 00223DPZ608 000ZCQK00201 001000ZBQK00201 001
01000840721300000032591110031024M10Z0001024M10Z00001083 28 0920068 00008311000000000082720000099990000000000000000000000000000000000000000000000000000000R072 040004 00023DPZ955 E115 I10 Z958 000DZQM00601 001000ZBQK00201 002000DEQP00301 001000DEQP00701 001
01000840721300000035931110031024Z17Z0001024Z17Z00001060 18 1220068 00010600000000000083150000099990000000000000000000000000000000000000000000000000000000F100 010001 00123DPZ958 001MAQK00301 001
01000840721300000045171110021004M10V0001004M10V00003079 28 0520068 00078480000000000011140000099990000000000000000000000000000000000000000000010000000000I269 020003 00123DP0300124DP 00523DPC519 I10 000ZBQK00201 001000YYYY46701 001000ECQH01001 001