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 :

Petit soucis d'écriture pour une vue [9.6]


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2005
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services à domicile

    Informations forums :
    Inscription : Septembre 2005
    Messages : 202
    Points : 124
    Points
    124
    Par défaut Petit soucis d'écriture pour une vue
    Bonjour,

    J'ai un petit soucis sur la manière d'écrire une vue, en admettant que ce que je souhaite faire s'y prete...
    J'ai 2 tables :
    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
    client :
     id | numero
    ----+--------
      1 | AAAA
      2 | BBBB
      3 | CCCC
     
    facture :
     id | id_client | date_creation | total
    ----+-----------+---------------+---------
      1 |         1 | 2017-05-03    | 100.00
      2 |         2 | 2017-06-04    | 150.00
      3 |         3 | 2017-06-04    | 200.00
      4 |         1 | 2017-06-04    | 210.00
      5 |         1 | 2018-01-04    | 500.00
      6 |         3 | 2018-07-04    | 800.00
    La vue que je cherche à faire doit pouvoir me ressortir ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     id_client | numero | ca_annee_en_cours | ca_annee_precedente
    -----------+--------+-------------------+---------------------
             1 | AAAA   |            500.00 |              310.00
             2 | BBBB   |              0.00 |              150.00
             3 | CCCC   |            800.00 |              200.00
    Je peux le faire avec 2 requêtes et ensuite la partie PHP s'occupera de réaranger cela mais ça serait plus "propre" avec moins de PHP
    Donc, est-il possible de faire cela avec une vue ?

    Merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 108
    Points : 28 409
    Points
    28 409
    Par défaut
    Les mots clés à prendre en compte : PIVOT et GROUP BY

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2005
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services à domicile

    Informations forums :
    Inscription : Septembre 2005
    Messages : 202
    Points : 124
    Points
    124
    Par défaut
    Ok donc possible. Je vais surtout regarder PIVOT
    GROUP BY je connais

  4. #4
    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
    Points : 3 591
    Points
    3 591
    Billets dans le blog
    8
    Par défaut
    Salut
    Je pense bien que ceci fera l'affaire...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    with r as (select id_client, extract(year from date_creation) as an, sum(total) as ca
    from facture group by id_client, extract(year from date_creation))
     
    select c.id_client, c.numero, rc.ca as ca_an_encours, rp.ca as ca_an_precedent
    from client as c 
    inner join r as rc on rc.id_client=f.id_client and rc.an=extract(year from current_date())
    inner join r as rp on rp.id_client=f.id_client and rc.an=extract(year from current_date())-1
    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. id "virtuel" pour une vue
    Par agh dans le forum Requêtes
    Réponses: 3
    Dernier message: 09/11/2009, 16h05
  2. Fast Debugger et netbeans 6.7 pour une vue .pdf.prawn
    Par rivsc dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 17/07/2009, 10h14
  3. Un trigger qui se declanche pour une vue
    Par redabadache3 dans le forum PL/SQL
    Réponses: 3
    Dernier message: 31/10/2007, 09h10
  4. Réponses: 6
    Dernier message: 25/07/2006, 15h40
  5. problème de code javascript pour une vue 360°
    Par tomguiss dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/03/2006, 22h50

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