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

Langage SQL Discussion :

Selectionner dernier relévé d'un abonné


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 111
    Points
    111
    Par défaut Selectionner dernier relévé d'un abonné
    Bonjour,
    ça fait 24h, je me casse la tête pour une requête SQL mais en vain!!!
    Voila, j'ai une
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Table RELEVE(Police,NomAbonné,Compteur, Index, Periode)
    A la création d'un nouveau abonnement, je fais aussi une insertion dans
    la table RELEVE avec N°Police, NomAbonné, N°COmpteur, Index(par défaut = 0) et la période=date d'abonnement(en fait, je veux initialiser).
    Maintenant mon soucis est que pour faire le relévé d'index, je ne dois sélectionner que les abonnés ayant au moins fait un mois de consommation(règle de gestion pour nouveau Abonné) et pour un abonné qui a été dejà relévé, ne selectionner que son dernier relévé.

    Genre comme le système de relévage de l'electricité ou de l'eau.

    Vos propositions et suggestions sont les bienvenus.

    Merci

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 902
    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 902
    Points : 53 143
    Points
    53 143
    Billets dans le blog
    6
    Par défaut
    Commencez par respecter la charte de postage en postant vos tables sous forme DDL ainsi qu'un jeu d'essais sour forme d'INSRET :
    http://www.developpez.net/forums/a69...gage-sql-lire/

    A +

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 111
    Points
    111
    Par défaut
    Salut,

    Voici ma table création et Abonnement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CREATE TABLE "RELEVE" 
    (
      "POLICE"	VARCHAR(8) NOT NULL,
      "N_INDEX"	INTEGER NOT NULL,
      "PERIODE"	DATE NOT NULL,
    CONSTRAINT "KEY" UNIQUE ("POLICE", "PERIODE")
    );
    J'ai supprimé des champs dans RELEVE que je trouve pas d'intérêt pour explication car la police permet de les retrouver dans Abonnement.

    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
     
    CREATE TABLE "ABONNEMENT" 
    (
      "POLICE"	VARCHAR(7) NOT NULL,
      "ABONNE"	VARCHAR(8) NOT NULL,
      "COMPTEUR"	VARCHAR(8) NOT NULL,
      "SECTEUR"	INTEGER,
      "PORTE"	INTEGER,
      "RUE"	VARCHAR(7),
      "SECTION"	VARCHAR(8) NOT NULL,
      "LOT"	VARCHAR(8) NOT NULL,
      "PARCELLE"	VARCHAR(9) NOT NULL,
      "INDEX_DEPART"	INTEGER NOT NULL,
      "USAGE"	VARCHAR(15) NOT NULL,
      "DATE_DEBUT_LOCATION"	DATE NOT NULL,
      "DATE_FIN_LOCATION"	DATE NOT NULL,
      "DETAILS"	VARCHAR(25),
     PRIMARY KEY ("POLICE")
    );
    Lors d'une insertion(création d'un nouveau Abonnement),
    je profite initialiser l'abonné pour les Relévés en faisant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    RELEVE.Police=Abonnement.Police
    RELEVE.N_INDEX=Abonnement.INDEX_DEPART
    RELEVE.Periode=Abonnement.DATE_DEBUT_LOCATION
    J'explique le reste en pseudo code maintenant:

    Les relévés d'index sont prévus tous les 15 du mois pour la consommation du mois précedent.
    Les abonnés concernés par ces relévés(Requête SELECT) sont les abonnés qui ont été Relévés le mois précedent(Anciens abonnés) mais aussi les nouveaux abonnés qui ont deja fait au moins mois de consommation(Periode de relevage - Date d'initialisation Abonné[date_debut_location] sinon ils seront relévés(select au prochain RELEVE)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT *
    FROM RELEVE, ABONNEMENT
    WHERE RELEVE.DATE>=(ABONNEMENT.Date_Debut_Location + 1mois) AND
              RELEVE.POLICE=ABONNEMENT.POLICE
              ..............
    NB: Seule la dernière ligne(date la plus recente du RELEVE d'un abonné est sélectionné.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/10/2007, 12h45
  2. Selectionner le dernier enregistrement d'une table
    Par Identifiant dans le forum ASP
    Réponses: 3
    Dernier message: 03/06/2007, 21h15
  3. créer une requête qui selectionne les 10 derniers enregistrements
    Par kuhnden dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 12/04/2007, 16h13
  4. [VBA E] Conserver le derniere valeur selectionné d'une combobox
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 18/06/2006, 10h28
  5. selectionner le dernier element d'une liste box
    Par adilou1981 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/03/2005, 10h19

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