Problème sql
LapindeTerraria
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'essais de faire en sorte que l'on puisse soit verser de l'argent qu'aux épreuves qu'on sponsorise déjà, soit qu'on verse de l'argent pour toutes les épreuves.
Je cherche à ajouter la deuxième option car j'ai déjà fais la première. Et je manque de connaissances.
Voici la structure de la BDD:
Et voici, mon code :
EDIT: Ajout des balises de code
J'essais de faire en sorte que l'on puisse soit verser de l'argent qu'aux épreuves qu'on sponsorise déjà, soit qu'on verse de l'argent pour toutes les épreuves.
Je cherche à ajouter la deuxième option car j'ai déjà fais la première. Et je manque de connaissances.
Voici la structure de la BDD:
CREATE TABLE sponsor ( idsponsor character(4) NOT NULL, idtypesponsor character(7) NOT NULL, CONSTRAINT pk_sponsor PRIMARY KEY (idsponsor), CONSTRAINT fk_sponsor_partenaire FOREIGN KEY (idsponsor) REFERENCES partenaire (idpartenaire) , CONSTRAINT fk_typesponsor FOREIGN KEY (idtypesponsor) REFERENCES typesponsor (idtypesponsor) ); CREATE TABLE epreuve ( idepreuve character(3) NOT NULL, nom text, CONSTRAINT pk_epreuve PRIMARY KEY (idepreuve) ); CREATE TABLE sponsoriser ( idepreuve character(3) NOT NULL, idsponsor character(4) NOT NULL, montant integer DEFAULT 0, CONSTRAINT pk_sponsoriser PRIMARY KEY (idepreuve,idsponsor), CONSTRAINT fk_sponsor FOREIGN KEY (idsponsor) REFERENCES sponsor (idsponsor), CONSTRAINT fk_sponsoriser_epreuve FOREIGN KEY (idepreuve) REFERENCES epreuve (idepreuve) );
Et voici, mon code :
CREATE OR REPLACE FUNCTION distribsponsor(vidsponsor character(4), vmontant integer) RETURNS VOID AS $$ DECLARE vnbsponsor integer; -- nombre d'épreuves sponsorisées par ce sponsor BEGIN -- nombre d'épreuves sponsorisées par ce sponsor select count(*) into vnbsponsor from sponsoriser where idsponsor = vidsponsor; -- distribution du montant sur les épreuves déjà sponsorisées update sponsoriser set montant = montant + (vmontant/vnbsponsor) where idsponsor = vidsponsor; END ; $$ LANGUAGE plpgsql;
EDIT: Ajout des balises de code
A voir également:
- Problème sql
- Logiciel sql - Télécharger - Bases de données
- Requete sql pix - Forum PHP
- Additions et multiplication dans des requêtes SQL ✓ - Forum MySQL
- Sql query download - Télécharger - Gestion de données
- Ora-00933: la commande sql ne se termine pas correctement ✓ - Forum Oracle
Enfaite le code du haut, c'est quel langage exactement ?
et/ou mettre à jour ...
Si tu es dans le second cas, il va falloir faire une condition pour vérifier si la ligne existe déjà dans ta table et si oui tu pourras faire la mise à jour dans le cas contraire il faudra faire un ajout.
Le langage utilisé ici est le SQL...
Renseigne-toi (formes toi) sur la création et l'utilisation des procédures stockées...