PostgreSQL 8.4 - pgAdmin 3
Mac OSX Snow Leopard 10.6
Bonjour à tous,
Je suis souveau sur le forum. Je me suis tourné vers PostgreSQL car je monte un projet d'entreprise et ai un souci d'économies.
PostgreSQL est donc sorti de ce choix puisque le SQL n'a pas l'air si compliqué comme langage (je n'ai pas dit qu'il ne l'était pas).
Mon but est de créer un tableau de bord de gestion. J'ai donc des tables résumant les produits, les fournisseurs de matière, les emballeurs (contenance), les transporteurs.
Ce qui nous intéresse ici c'est la relation de tables liées fournisseur/produit. Une fois la logique acquise, j'adapterai.
Pour certains, la table produit ne sert à rien car il suffit de faire une recherche SELECT FROM WHERE pour avoir l'équivalent. Certes. Mais afficher la table produit requiert moins d'étapes que de faire une demande, d'où un gain de temps important pour moi.
Si vous le permettez, je vais mettre mes deux tables ci dessous, qui concernent mon problème:
Ci-dessous, la table fournisseurs:
A présent, la table Produits:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 -- Table: fournisseurs."ident_Fournisseurs" -- DROP TABLE fournisseurs."ident_Fournisseurs"; CREATE TABLE fournisseurs."ident_Fournisseurs" ( "Id_Fournisseur" integer NOT NULL DEFAULT nextval('fournisseurs."ident_Fournisseurs_Id_seq"'::regclass), "Societe" character varying NOT NULL, "Interlocuteur" character varying(255), "Mail" character varying, "Num_1" smallint, "Num_2" smallint, "Num_Portable" smallint, "N°Voie" smallint, "Type_Voie" character varying, "Nom_Voie" character varying, "Code_Postal" integer, "Ville" character varying, "Pays" character varying NOT NULL, "Id_Produit" integer NOT NULL DEFAULT nextval('fournisseurs."ident_Fournisseurs_Id_Produit_seq"'::regclass), "Produit" character varying NOT NULL, CONSTRAINT "ident_Fournisseurs_pkey" PRIMARY KEY ("Id_Fournisseur", "Id_Produit") ) WITH ( OIDS=FALSE ); ALTER TABLE fournisseurs."ident_Fournisseurs" OWNER TO postgres; COMMENT ON TABLE fournisseurs."ident_Fournisseurs" IS 'Table incluant les fournisseurs + produit(s) qu''ils me vendent.';
J'ai réussi, grâce à un script que j'ai créé, à faire en sorte que les produits que j'insère depuis la table fournisseur soient copiés vers la table produit.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 -- Table: produit."Produits" -- DROP TABLE produit."Produits"; CREATE TABLE produit."Produits" ( "Produit" character varying, "Id_Produit" integer NOT NULL, "Societe" character varying NOT NULL, "Contenance (ml)" integer, "Pays" character varying, CONSTRAINT "Produits_pkey" PRIMARY KEY ("Id_Produit") ) WITH ( OIDS=FALSE ); ALTER TABLE produit."Produits" OWNER TO postgres; GRANT UPDATE ON TABLE produit."Produits" TO public;
Je montre mon -petit- bout de code:
En clair, il me copie correctement les données de fournisseurs vers produits. Mais il ne peut pas le faire deux fois car il y a des redondances.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 INSERT INTO "produit"."Produits"( "Produit", "Id_Produit", "Societe", "Pays") SELECT "Produit", "Id_Produit", "Societe", "Pays" FROM fournisseurs."ident_Fournisseurs";
Ce que je souhaite c'est que la table produit se mette à jour toute seule, sans redondance, ou qu'elle insère les données si elles n'existent pas lorsque j'ai fini d'intégrer les données de la table fournisseurs.
Et là, je bloque. Les exemples de triggers ne m'aident alors que je sais que c'est ce dont j'ai besoin.
Je suis dans l'impasse, je suis preneur ne serait-ce que du moindre indice,
Merci d'avance, à bientôt,
LeHibou2
Partager