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

Oracle Discussion :

[Oracle 8.0] probleme requete count sur plusieurs tables


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    B&B
    B&B est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 20
    Par défaut [Oracle 8.0] probleme requete count sur plusieurs tables
    Hello,

    J'ai 2 tables (je mets juste les champs utiles pour la requete) :


    COMMANDE : pk_num_cmd date_cmd

    LIVRAISON : pk_num_liv date_liv fk_num_cmd

    Le but de la requete est de compter le nombre de commande et de livraison effectué les 7 derniers jours.

    Apres plusieurs essais, je suis arrivé à recuperer le nombre exact de commande, mais pas de livraison, ce qui est normal car je fais pas de test sur la date_liv.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT 
    count(distinct b.num_bon) "NB CMD",
    count(distinct l.num_liv) "NB LIV"
    FROM bon_de_cmd b,livraison l
    WHERE b.date_bdc 
    BETWEEN (sysdate-7) AND (sysdate);
    J'arrive pas a voir comment faire

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    il n'y a pas de jointure entre les 2 tables ?

    Par ailleurs, les 2 entités étant différentes, ça ne paraît pas judicieux de le faire en une seule requête... n'y a-t-il pas un flag ou une date de livraison dans la table commande (pour savoir si elle a été livrée) ?

  3. #3
    B&B
    B&B est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 20
    Par défaut
    Eh bien, une Commande peut etre effectué en plusieurs Livraison

    Aucune informations sur la Livraison est dans Commande

    et Livraison a une clef etrangere (fk_num_cmd) sur la table Commande



    Je l'aurai bien fait en 2 requetes mais le prof veut pas -_-

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT 
    	   count(distinct fk_num_cmd) "NB CMD",
    	   count(distinct num_liv) "NB LIV"
      FROM livraison
     WHERE date_liv BETWEEN sysdate-7 AND sysdate -- livraison de la semaine
       AND fk_num_cmd IN (SELECT date_cmd 
       	   			  	    FROM COMMANDE 
    					   WHERE date_bdc BETWEEN (sysdate-7) AND (sysdate)
    					  ) -- commande de la semaine
    ;

  5. #5
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Citation Envoyé par B&B
    Je l'aurai bien fait en 2 requetes mais le prof veut pas -_-
    T'aurais dû trouver seul dans ce cas... essaye de te débrouiller seul à l'avenir ou au moins nous fournir une poste en montrant tes 1° avancées

  6. #6
    B&B
    B&B est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 20
    Par défaut
    J'allais pas mettre tous mes essais precedent qui marchait pas, j ai juste mis le dernier que j ai trouve. Je l aurai bien fait seul mais j arrive pas a modeliser la structure de cette requete

    Sinon ta requete me renvoie 0 pour les 2 colonnes, alors qu il y a des commandes et livraisons.

    J'avais oublié de préciser qu'une commande peut NE PAS AVOIR de livraison (c est peut etre pour ca qu il me renvoie 0 )

    merci pour l aide , +

  7. #7
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    t'as le principe, à toi d'adapter selon le besoin fonctionnel.

    Ceci étant, si une commande ne peut pas avoir de livraison on se demande bien comment faire une jointure entre les 2 et à quoi sert la FK... il doit y avoir quelquechose que tu n'as pas saisi dans l'énoncé

Discussions similaires

  1. [Oracle] Count(*) sur plusieurs tables
    Par darkangel23fr dans le forum SQL
    Réponses: 2
    Dernier message: 16/02/2009, 11h32
  2. Réponses: 1
    Dernier message: 28/03/2007, 12h23
  3. Requete MySQL sur plusieurs tables
    Par romulus67 dans le forum Requêtes
    Réponses: 10
    Dernier message: 03/07/2006, 17h45
  4. requête count sur deux tables
    Par psychoBob dans le forum Requêtes
    Réponses: 7
    Dernier message: 13/06/2006, 15h12
  5. Requete COUNT sur 3 tables
    Par Le-Cortex dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/09/2005, 10h39

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