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 :

Requête d'entrée et sortie de médicaments


Sujet :

SQL Oracle

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Requête d'entrée et sortie de médicaments
    Salut à tous, actuellement je suis confronté à un problème sur une requête :
    je veux avoir l’état de mes entrées et sorties de médicaments en fonction d'une période donnée et du médicament choisi et avoir le stock après chaque période.
    mes tables sont les suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    en_medicament(code_medic,lib_medic,qte_initial)
    en_entre_medicament(id_entr_medic,qte_entre,code_medic)
    en_consultation(id_consult,date_consult)
    en_prescription(id_consult,code_medic,qte_sortie)
    NB: la date de consultation correspond à la date de sortie des médicaments.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    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 080
    Points : 30 786
    Points
    30 786
    Par défaut
    Qu'as-tu déjà essayé comme requête ?
    Où rencontres-tu un problème ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Requête d'entrée et sortie de médicaments
    voici le requête que j'ai essayé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    select * from en_medicament
    left join
     
    (select code_medic,date_entre,sum(qte_entre) from en_entree_medicament
    where date_entre >  '10/01/2014'
    and date_entre   <  '10/06/2014'
    group by code_medic,date_entre
    union
    select code_medic,date_consult,sum(qte_presc) from en_prescription
    left outer join EN_CONSULTATION on en_consultation.num_consult=en_prescription.num_consult
    where DATE_CONSULT >  '10/01/2014'
    and date_consult   <  '10/06/2014'
    group by code_medic,date_consult) entre_sortie
    on entre_sortie.code_medic=en_medicament.code_medic
    De manière concrète voici mon problème :
    J’ai deux requêtes de sélections que j’aimerai fusionner
    La première contient la date entrée, l’identifiant du médicament en question, et la quantité entrée
    Et la deuxième contient la date sortie, l’identifiant du médicament en question, et la quantité sortie
    la troisième que je cherche sera comme suit: Date (Date entrée et Date sortie), libelle du médicament, quantité_entrée, quantité_sortie
    Et donne le stock en fin de période

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    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 080
    Points : 30 786
    Points
    30 786
    Par défaut
    Quelque chose dans ce gout-là :
    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
    SELECT  mdc.code_medic,
        ,   COALESCE(ent.date_entre, srt.date_consult)  date_ope
        ,   ent.tot_entre
        ,   srt.tot_presc 
    FROM    en_medicament   mdc
        LEFT JOIN
                (   SELECT  code_medic
                        ,   date_entre
                        ,   SUM(qte_entre)  tot_entre 
                    FROM    en_entree_medicament    
                    WHERE   date_entre > '10/01/2014'
                        AND date_entre < '10/06/2014'
                    GROUP BY code_medic
                        ,   date_entre
                )   ent
                ON  ent.code_medic = mdc.code_medic
            FULL OUTER JOIN
                (   SELECT  prs.code_medic
                        ,   cns.date_consult
                        ,   SUM(prs.qte_presc)  tot_presc
                    FROM    en_consultation cns
                        INNER JOIN
                            en_prescription prs
                            ON  cns.num_consult = prs.num_consult
                    WHERE   cns.date_consult > '10/01/2014'
                        AND cns.date_consult < '10/06/2014'
                    GROUP BY code_medic
                        ,   date_consult
                )   srt
                ON  ent.code_medic = srt.code_medic
                AND ent.date_entre = srt.date_consult
            ON  mdc.code_medic  = COALESCE(ent.code_medic, srt.code_medic)
    ;
    Pour connaitre le stock en fin de période, il faudrait connaître celui en début de période...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Requête d'entrée et sortie de médicaments
    Grand merci pour ta repose mais quand j'essaie de faire apparaître le libelle du médicament j'obtient une erreur de la sorte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ORA-00600: code d'erreur interne, arguments : [kkqcscpopn_Int: 0], [], [], [], [], [], [], [], [], [], [], []
    00600. 00000 -  "internal error code, arguments: [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s]"
    *Cause:    This is the generic internal error number for Oracle program
               exceptions.	This indicates that a process has encountered an
               exceptional condition.
    *Action:   Report as a bug - the first argument is the internal error number
    et le code du médicament au niveau des sortie affiche null

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    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 080
    Points : 30 786
    Points
    30 786
    Par défaut
    Les erreurs ORA-00600 sont des erreurs internes d'Oracle qui doivent être soumises le plus souvent à un DBA expérimenté ou au support Oracle pour pouvoir être résolues.
    Tu as peut-être rencontré les limites de ton serveur (mémoire, process, ...) ou un problème physique sur l'une de tes tables ou c'est un bug référencé pour lequel il existe un patch ou autre chose .
    J'ai déjà rencontré ces trois premiers cas avec ce même code d'erreur, pris en charge par le support Oracle.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  7. #7
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    voici la requete final:
    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
     
    SELECT   COALESCE(ent.code_medic,srt.code_medic) code_medic 
        ,   COALESCE(ent.date_entre, srt.date_consult)  date_ope
        ,   ent.tot_entre
        ,   srt.tot_presc 
    FROM    en_medicament   mdc
        LEFT JOIN
                (   SELECT  code_medic
                        ,   date_entre
                        ,   SUM(qte_entre)  tot_entre 
                    FROM    en_entree_medicament    
                    WHERE   date_entre >= '$periodedu'
                        and date_entre <= '$periodeau'
                        and en_entree_medicament.code_medic = '$cod_medic'
                    GROUP BY code_medic
                        ,   date_entre
                )   ent
                ON  ent.code_medic = mdc.code_medic
            FULL OUTER JOIN
                (   SELECT  prs.code_medic
                        ,   cns.date_consult
                        ,   SUM(prs.qte_presc)  tot_presc
                    FROM    en_consultation cns
                        INNER JOIN
                            en_prescription prs
                            ON  cns.num_consult = prs.num_consult
                    WHERE   cns.date_consult >= '$periodedu'
                        and cns.date_consult <= '$periodeau'
                         and prs.code_medic = '$cod_medic'
                    GROUP BY code_medic
                        ,   date_consult
                )   srt
                on  ent.code_medic = srt.code_medic
                AND  ent.date_entre = srt.date_consult
                and  mdc.code_medic  = coalesce(ent.code_medic, srt.code_medic)
                and mdc.code_medic='$cod_medic'
            order by date_ope
    Grand merci a toi de m'avoir d'aider

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

Discussions similaires

  1. Requêtes croisées entre 2 connexions distinctes
    Par fulster dans le forum Bases de données
    Réponses: 2
    Dernier message: 09/12/2006, 23h14
  2. Java et Classeur Excel en entrée puis sortie
    Par mediateur59 dans le forum Documents
    Réponses: 10
    Dernier message: 16/11/2006, 09h25
  3. gestion des entrées et sortie en java
    Par lecyberax dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 14/05/2006, 22h51
  4. [Oracle] Requête sur 3 tables, sortie fichier
    Par Bast92 dans le forum Langage SQL
    Réponses: 20
    Dernier message: 18/04/2006, 15h33
  5. [K&R] Copie entrée sur sortie
    Par sorry60 dans le forum C
    Réponses: 7
    Dernier message: 25/04/2005, 21h32

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