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

SQL Firebird Discussion :

Jointure à problème


Sujet :

SQL Firebird

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Par défaut Jointure à problème
    Bonjour, j'ai une table des Magasins "MAGASINS" et une des Inventaires "TABLEINVENTAIRES" et je voudrais faire une jointure entre ces tables pour extraire pour chaque magasin, le dernier inventaire fait par rapport a sa date, s'il existe bien sûr.
    pour des données suivantes:
    MAGASINS:
    REFMAGASIN -- NOM_MAGASIN
    1 ------------- Magasin Un
    2 ------------- Magasin Deux
    3 ------------- Magasin Trois

    TABLEINVENTAIRES :
    REFINVENTAIRE - REFMAGASIN - DATE_INVENTAIRE
    1 --------------- 1 ----------- 01/12/2007
    2 --------------- 3 ----------- 31/12/2007
    3 --------------- 1 ----------- 01/02/2009
    4 --------------- 3 ----------- 31/12/2008

    Avec un résultat du genre :
    REFMAGASIN -------- DATE_INVENTAIRE
    1 ------------------- 01/02/2009
    2 ------------------- NULL
    3 ------------------- 31/12/2008

    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
    CREATE TABLE MAGASINS (
        REFMAGASIN  BIGINT NOT NULL,
        NOM_MAGASIN   VARCHAR(80) NOT NULL
    );
     
    ALTER TABLE MAGASINS ADD CONSTRAINT PK_MAGASINS PRIMARY KEY (REFMAGASIN);
     
    CREATE TABLE TABLEINVENTAIRES (
        REFINVENTAIRE   BIGINT NOT NULL,
        REFMAGASIN     BIGINT NOT NULL,
        DATE_INVENTAIRE  DATE NOT NULL,
    );
     
    ALTER TABLE TABLEINVENTAIRES ADD CONSTRAINT PK_TABLEINVENTAIRES PRIMARY KEY (REFINVENTAIRE);
     
    ALTER TABLE TABLEINVENTAIRES ADD CONSTRAINT FK_TABLEINVENTAIRES_MAG FOREIGN KEY (REFMAGASIN) REFERENCES MAGASINS (REFMAGASIN);

  2. #2
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 721
    Par défaut
    ya un truc que je ne comprend pas :
    le dernier inventaire fait par rapport a sa date,
    par rapport a quelle date !
    sinon le truc c'est de caster la date en integer et de chercher le max, ensuite faire un group by
    voici ma proposition syntaxe a vérifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT REFMAGASIN, DATE_INVENTAIRE, max( cast(DATE_INVENTAIRE)as integer)
     
    FROM   MAGASIN M 
           LEFT OUTER JOIN IVENTAIRES I
           ON M.REFMAGASIN = I.REFMAGASIN
     
    GROUP BY REFMAGASIN, DATE_INVENTAIRE

  3. #3
    Membre très actif Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Par défaut
    ya un truc que je ne comprend pas :
    Citation:
    le dernier inventaire fait par rapport a sa date,
    par rapport a quelle date !
    Par rapport a la date de l'inventaire, le dernier inventaire chronologiquement.

    cast(DATE_INVENTAIRE)AS integer
    Ca, Firebird ne l'except pas, mais vous m'avez donnée une piste qui m'a permi de trouver la solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT M.REFMAGASIN, MAX(I.DATE_INVENTAIRE)
    FROM MAGASINS M
     LEFT OUTER JOIN TABLEINVENTAIRES I
     ON (M.REFMAGASIN = I.REFMAGASIN)
    GROUP BY REFMAGASIN
    Merci pour le coup de main.

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

Discussions similaires

  1. Requête avec Jointure (Problème)
    Par nirG95 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 09/10/2009, 15h13
  2. [jointures] Problème de clé primaire null ?
    Par brolon dans le forum SQL
    Réponses: 3
    Dernier message: 21/01/2009, 13h40
  3. [table de jointure] problème 3201 lors d'enregistrement
    Par Heidie dans le forum Modélisation
    Réponses: 1
    Dernier message: 04/01/2009, 11h57
  4. API Criteria, charger une jointure, problème bizarre
    Par TiMiD dans le forum Hibernate
    Réponses: 2
    Dernier message: 17/10/2007, 17h06
  5. Réponses: 2
    Dernier message: 08/03/2004, 15h10

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