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 :

Problème de requête


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 24
    Par défaut Problème de requête
    Bonjour,

    Je travaille sous oracle8i (l'université à pas encore migré à la 10g, enfin ..)

    Voici mes tables

    DEPARTEMENT(NUMERO_DPT, NOM_DPT)
    VILLE(NUMERO_VILLE, NOM_VILLE, NOMBRE_HABITANTS_VILLE, #NUMERO_DPT_VILLE)

    NOM_VILLE et NOM_DPT sont unique.

    Je fais une application en Pro*C
    Je dois insérer une ville donné par l'utilisateur, jusque là simple.

    Mais je souhaiterais faire une requête qui me renseigne si les données que l'utilisateur a saisie sont valides, à savoir
    - Le nom du département existe
    - Le numéro de la ville n'existe pas déjà
    - Le nom de la ville n'existe pas déjà

    Ce que je pensais faire c'est de vérifié tous en une requête mais je pense que c'est iréalisable ou ca devient aussi compliqué que de diviser en 3 requêtes.

    Je demande donc votre avis si je divise en 3 ou si il y a une solution.

    Je pourrais par exemple avoir une requête résultante du style
    - Aucune ligne => Pas de département
    - Numero ville = null => Le numero n'existe pas
    - Nom ville = null => La ville n'existe pas
    Merci d'avance pr l'aide

  2. #2
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut
    Bonjour,

    La clé primaire de la table ville est NUMERO_VILLE et NUMERO_DPT_VILLE clé étrangère ?
    Si c'est le cas il faut utiliser une jointure externe pour te ramemer les enregistrements qui participent a la relation et qui participent pas a la relation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select d.NUMERO_DPT, d.NOM_DPT,v.NUMERO_VILLE, v.NOM_VILLE
    from DEPARTEMENT d ,VILLE v 
    where d.NUMERO_DPT=v.NUMERO_DPT_VILLE (+)
    cette requette va te donner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    - Aucune ligne => Pas de département
    - Numero ville = null => Le numero n'existe pas
    - Nom ville = null => La ville n'existe pas

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 24
    Par défaut
    J'ai déjà essayé mais le problème est que l'utilisateur renseigne numero_ville et numero_dpt

    Par exemple pr ca

    SELECT d.NUMERO_DPT, d.NOM_DPT,v.NUMERO_VILLE, v.NOM_VILLE
    FROM DEPARTEMENT d ,VILLE v
    WHERE d.NUMERO_DPT=v.NUMERO_DPT_VILLE (+) AND v.NUMERO_VILLE = 33 AND v.NOM_VILLE = 'Gironde';
    Si le numéro_ville n'existe pas alors je n'aurais aucune ligne en sortie.

  4. #4
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut
    Bonjour,

    Tu as seulement oublié un petit détail, il faut suivre ta condition a la jointure externe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT d.NUMERO_DPT, d.NOM_DPT,v.NUMERO_VILLE, v.NOM_VILLE
    FROM DEPARTEMENT d ,VILLE v
    WHERE d.NUMERO_DPT=v.NUMERO_DPT_VILLE (+) 
    AND v.NUMERO_VILLE(+) = 33 
    AND v.NOM_VILLE (+)= 'Gironde';

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 24
    Par défaut
    On est proche de la solution ..

    SELECT d.NUMERO_DPT, d.NOM_DPT, v1.NUMERO_VILLE, v2.NOM_VILLE
    FROM DEPARTEMENT d, VILLE v1, VILLE v2
    WHERE d.NUMERO_DPT=v1.NUMERO_DPT_VILLE (+)
    AND d.NUMERO_DPT=v2.NUMERO_DPT_VILLE (+)
    AND v1.NUMERO_VILLE(+) = 28
    AND d.NOM_DPT(+) = 'Gironde'
    AND v2.NOM_VILLE(+) = 'Arcachon';
    Mais le problème de cette requête c'est qu'a cause de la jointure externe sur le numero_dpt mes villes renseignées doivent être du département saisie, sinon elles ne sont pas marquées et moi je souhaite qu'il check les villes de toute la table et non que de la jointure du département.

    Car sinon en jeux d'essai en echec je peux avoir
    -Le département existe
    -La ville existe "Mais n'appartient pas au département précédemment cité .."
    -Idem avec le numéro ville

  6. #6
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Par défaut
    Bonjour ,

    Je comprends pas un chose avec cette condition tu vas afficher seulement les département qui n'ont pas de villes ou le département 'Gironde' et la ville
    'Arcachon' et le numero de la ville 28
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    AND v1.NUMERO_VILLE(+) = 28
    AND d.NOM_DPT(+) = 'Gironde'
    AND v2.NOM_VILLE(+) = 'Arcachon';
    Si tu veux voir tous les departements et vces villes il faut enlever cette condition

+ 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