IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes PostgreSQL Discussion :

Sujet non compris


Sujet :

Requêtes PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 19
    Par défaut Sujet non compris
    Bonjour,

    avant même de commencer l'exercice, je ne comprend pas très bien le sujet en lui-même, ce que le trigger fait

    une petit explication serait pas de refus

    voici le trigger :
    en gros, je ne comprend pas à quoi il sert et ce qu'il fait.

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    CREATE FUNCTION reglementSejour(idResa integer)
    RETURNS numeric(l0,2)
    AS $codeFonction$
    DECLARE
    	numCli integer ;
    	montantDejaPaye numeric(l0,2) ;
    BEGIN
    	SELECT idClient INTO numCli
    	FROM reservation
    	WHERE idReservation = idResa ;
     
    SELECT SUM(montantReglement) INTO montantDejaPaye
    	FROM reglement
    	WHERE idReservation = idResa ;
    	IF	(montantDejaPaye IS NULL ) THEN
     
    montantDejaPaye = 0 ;
     
    END IF ;
     
    IF ((SELECT COUNT(*) FROM pro WHERE idClient = numCli)=l) THEN
    		RETURN(SELECT SUM(prix * duree) - montantDejaPaye
    			FROM contenir
    					JOIN chambre USING (numeroChambre)
    					JOIN concerner USING (numeroChambre,idReservation)
    			WHERE dateDebut >= CURRENT_DATE
    			AND idReservation = idResa
    			) 
    ;
    	ELSE
    RETURN (SELECT SUM(prix * duree)
     
    			FROM contenir
    				JOIN chambre USING (numeroChambre)
    				JOIN concerner USING (numeroChambre,idReservation)
    			WHERE idReservation = idResa
    			) ;
    END IF ;
     
    END ;
    $codeFonction$ LANGUAGE PLPGSQL ;

  2. #2
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Il faudrait savoir à qui sert la table pro
    => pro(vision) ?
    => pro(totype) ?
    => pro(phétique) ?
    => pro(fessionnel) ?

    Les autres tables (réservation, reglement, etc.)
    portant un nom parlant/évocateur ...

    Sans cela on peut expliquer certes mais ça pourrait ne pas
    avoir beaucoup de sens ou une interprétation erronée !?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 19
    Par défaut re
    Bonjour vttman,

    oui en effet j'ai un mcd à disposition aussi mais je savais pas que sa pouvait être utile pour cette partie de l'exercice


    Nom : mcd.png
Affichages : 281
Taille : 135,0 Ko

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Ce "trigger" retourne le solde à payer.

    Pour information les jointures avec USING sont un véritable poison et une imbécilité ! En effet elles conduisent systématiquement à des jointures triangulaires et tuent les performances.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Oui Pro => Professionnel maintenant c'est clair !

    Ce que j'en comprend, SQL PRO pourra peut-être confirmer (Bonjour au passage)
    =>
    1) On sélectionne le numéro de client pour une réservation donnée
    2) On calcule ensuite ce qu'il a déjà réglé, si on ne trouve rien c'est 0
    3) Si c'est un PRO on retourne ce qui lui reste à payer par rapport à sa réservation
    et par rapport à une date (voir ci dessous point B)
    Sinon // je suppose que c'est un particulier
    on retourne ce que le particulier doit payer par rapport à sa réservation // pas de montant déjà payé pris en compte

    Ce qui pourrait laisser supposer (sauf erreur de ma part )
    A) Que les PRO peuvent régler en plusieurs fois et les particuliers en une seule (Bon je ne suis pas famille avec Sherlock Holmes )
    B) Qu'à une date donnée, malgré une somme ou pas déjà versée, le PRO n'ait rien à régler pour le moment ... ou à régler un autre somme mais pas la totalité de sa note systématiquement ...

  6. #6
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Ce "trigger" retourne le solde à payer.

    Pour information les jointures avec USING sont un véritable poison et une imbécilité ! En effet elles conduisent systématiquement à des jointures triangulaires et tuent les performances.

    A +
    USING : 1ère fois, me semble t'il, que je voyais ça d'ailleurs

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 19
    Par défaut re
    d'accord merci de vos réponses, je vais enfin essayais de commencer l'exercice grâce à ces éléments.
    Pour info, oui pour le "using" le prof en a parlé, mais pas le choix pour lui, il nous a dit qu'on doit aussi voir un trigger l'utilisant au moins une fois pour pas être étonné un jour où on le rencontre

  8. #8
    Membre Expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Billets dans le blog
    8
    Par défaut
    Salut
    Citation Envoyé par Kenoby Voir le message
    ...avant même de commencer l'exercice, je ne comprend pas très bien le sujet en lui-même, ce que le trigger fait
    ... et si la question du sujet est "Que fait le trigger?"
    C'est pas vraiment l'habitude de SQLpro de répondre à ces genre de question. Alors on manque de vigilance ou quoi?
    @+

Discussions similaires

  1. Bug non compris
    Par Alec6 dans le forum Hibernate
    Réponses: 2
    Dernier message: 05/02/2007, 09h48
  2. Current (bug ou principe non compris ?)
    Par DelphiManiac dans le forum Access
    Réponses: 7
    Dernier message: 10/10/2006, 14h55
  3. [error] depassement de memoire non compris
    Par guns17 dans le forum Langage
    Réponses: 8
    Dernier message: 26/07/2006, 16h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo