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 Oracle Discussion :

Problème de requête


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Points : 50
    Points
    50
    Par défaut Problème de requête
    Bonjour à tous !

    Désolé le titre n'est pas très explicite mais je ne voyais pas comment dire autrement.
    Voilà j'ai un petit souci sur lequel je galère depuis 2 jours sur une requete.

    Voici la requete de base et son résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT cd_batch, dttm_stock_mvt,  cd_mvt_type,  cd_warehouse
    FROM  stock_mouvemt
    WHERE cd_register = 'M210-0175' --Numéro de l'article
    and (( cd_warehouse='SERIN' and CD_MVT_TYPE like 'E%')
    or  ( cd_warehouse='SEROUT' and CD_MVT_TYPE like 'S%') )
    N°MVT________DT_____TYPE-MVT_____MAG
    10497______13/02/07______E2________SERIN
    11949______02/03/07______S5________SEROUT
    41073______17/03/08______E2________SERIN
    42098______04/04/08______S5________SEROUT
    Explication : Il s'agit du mouvement d'un article dans un stock: son entrée (SERIN) et la date correspondante, sa sortie(SEROUT) et la date correspondante, et son numéro de mouvement. On peut laisser de coté le TYPE-MVT.

    Donc là on voit que pour l'article concerné il est entré le 13/02/07 et est sorti le 02/03/07 et est entré à nouveau le17/03/08 pour sortir le 04/04/08.

    Le probleme que j'ai est que je souhaiterai que pour l'article soit affiché sur la même ligne son entrée et sa sortie du type:

    13/02/07_____SERIN______02/03/07____SEROUT
    17/03/08_____SERIN______04/04/08____SEROUT
    Et là c'est le drame...

    Donc si quelqu'un veux bien m'éclairé. merci

  2. #2
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2006
    Messages : 142
    Points : 130
    Points
    130
    Par défaut
    Bonjour,

    Je pense qu'il faut faire une jointure entre la table et elle-même, du genre

    SELECT I.cd_batch, I.dttm_stock_mvt, I.cd_warehouse,
    min(O.dttm_stock_mvt), O.cd_warehouse,
    FROM stock_mouvemt I, stock_mouvemt O
    WHERE cd_register = 'M210-0175' --Numéro de l'article
    AND I.cd_warehouse='SERIN'
    AND O.cd_warehouse='SEROUT'
    AND I.cd_batch = O.cd_batch
    AND O.dttm_stock_mvt > I.dttm_stock_mvt
    group by I.cd_batch, I.dttm_stock_mvt, I.cd_warehouse,
    O.dttm_stock_mvt
    Le min, le > et le group by servent à prendre uniquement la date de sortie correspondant à la date d'entrée.
    La différence entre la théorie et la pratique, c'est qu'en théorie il n'y a pas de différence entre la théorie et la pratique. En pratique, si.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Points : 50
    Points
    50
    Par défaut
    PARFAIT ! Je te remercie !

    voilà la requete au final :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    select s1.dttm_stock_mvt entree, s1.cd_warehouse, min(s2.dttm_stock_mvt), s2.cd_warehouse
    from stock_mouvemt s1, stock_mouvemt s2
    where s1.cd_register = 'M210-0175'
      and s1.cd_warehouse='SERIN'
      and s1.cd_mvt_type like 'E%'
      and s2.cd_register = s1.cd_register
      and s2.cd_warehouse='SEROUT'
      and s2.cd_mvt_type like 'S%'
      and s2.dttm_stock_mvt > s1.dttm_stock_mvt
    group by s1.dttm_stock_mvt, s1.cd_warehouse, s2.cd_warehouse
    order by entree
    en gros y'avait juste à supprimer s1.cd_batch = s2.cd_batch dans le where et le min(s2.dttm_stock_mvt) à enlever du group by dans la requete que tu m'as soumise.

    c'était cette notion avec le min et le > qui me manquait justement !
    tu m'enlèves une bonne épine du pied ^^. merci beaucoup

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 27/08/2003, 15h32
  2. problème de requête avec jointures
    Par tinhat dans le forum Requêtes
    Réponses: 7
    Dernier message: 11/08/2003, 10h33
  3. Problème de requètes concurentes
    Par Emmanuel.G dans le forum XMLRAD
    Réponses: 3
    Dernier message: 08/08/2003, 16h51
  4. Réponses: 2
    Dernier message: 16/07/2003, 14h40
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

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