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

InterBase Discussion :

pb requête sous interbase


Sujet :

InterBase

  1. #1
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    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 679
    Points : 954
    Points
    954
    Par défaut pb requête sous interbase
    bonjour à tous

    je m'excuse au prés de tous pour mon absence du a un
    stage que j'effectue.

    concernant ma base de données, j'ai les tables suivantes:

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    CREATE TABLE "ORGANISMES" 
    (
      "NUMERO_ORG"	VARCHAR(5) NOT NULL,
      "NOM_ORG"	VARCHAR(30) NOT NULL,
      "ADRESSE_ORG"	VARCHAR(25) NOT NULL,
      "TELEPHONE_ORG"	VARCHAR(15) NOT NULL,
      "FAXE_ORG"	VARCHAR(15) NOT NULL,
      "ACTIVITES"	VARCHAR(40) NOT NULL,
      "NOM_DIRIGEANT"	VARCHAR(30) NOT NULL,
      "SITUATION_GEOGRAPHIQUE"	VARCHAR(40),
     CONSTRAINT "PK_ORGANISMES" PRIMARY KEY ("NUMERO_ORG")
    );
     
    CREATE TABLE "PARTICIPANT" 
    (
      "NUMERO_PART"	VARCHAR(5) NOT NULL,
      "NOM"	VARCHAR(35) NOT NULL,
      "NUMERO_PERSO"	VARCHAR(15),
      "FONCTION"	VARCHAR(30),
      "NUMEROORG"	VARCHAR(5),-------------------> lien vers organisme
      "NUMEROGTR"	VARCHAR(5),------------------> lien vers gtravail
      "NUMEROCOM"	VARCHAR(5),---------------------> lien vers comtech
      "NUMEROSCO"	VARCHAR(5),----------------------> lien vers scomite
    CONSTRAINT "PK_PARTICIPANT" PRIMARY KEY ("NUMERO_PART")
    );
    CREATE TABLE "GTRAVAIL" 
    (
      "NUMERO_GTR"	VARCHAR(5) NOT NULL,
      "CODE_GTRAVAIL"	VARCHAR(15) DEFAULT,
      "TITRE_GTRAVAIL"	VARCHAR(60) NOT NULL,
      "NOMBREMEMBRE_GTR"	INTEGER NOT NULL,
      "PRESIDENT_GTRAVAIL"	VARCHAR(30) NOT NULL,
      "NUMEROSCO"	VARCHAR(5),----------------------->lien vers scomite
    CONSTRAINT "PK_GTRAVAIL" PRIMARY KEY ("NUMERO_GTR")
    );
    CREATE TABLE "COMTECH" 
    (
      "NUMERO_COM"	VARCHAR(5) NOT NULL,
      "CODE_COMTECH"	VARCHAR(20)  ,
      "TITRE_COMTECH"	VARCHAR(60) NOT NULL,
      "NOMBREMEMBRES_COM"	INTEGER NOT NULL,
      "PRESIDENT_COMTECH"	VARCHAR(30) NOT NULL,
    CONSTRAINT "PK_COMTECH" PRIMARY KEY ("NUMERO_COM")
    );
    CREATE TABLE "SCOMITE" 
    (
      "NUMERO_SCO"	VARCHAR(5) NOT NULL,
      "CODE_SCOMITE"	VARCHAR(15)  ,
      "TITRE_SCOMITE"	VARCHAR(60) NOT NULL,
      "NOMBREMEMBRES_SCO"	INTEGER NOT NULL,
      "PRESIDENT_SCOMITE"	VARCHAR(30) NOT NULL,
      "NUMEROCOM"	VARCHAR(5),---------------------->lien vers comtech
    CONSTRAINT "PK_SCOMITE" PRIMARY KEY ("NUMERO_SCO")
    );
    je veux donc pour un participant donnée, avoir les informations
    suivantes:

    1.le nom de l'organisme ( ref:table organismes)
    2.le nom du comité (ref:table comtech) ou sous comité (ref:table scomite) ou
    groupe (ref:gtravail) auquel il appartient.

    voici donc ma requête qui malheureusement ne fonctionne pas
    en faite dans la table je regarde la colonne des groupes(SCOMITE ou COMTECH ou GTRAVAIL)
    qui est null grace à PARTICIPANT.NUMEROSCO, PARTICIPANT.NUMEROCOM, PARTICIPANT.NUMEROGTR
    seule la colonne non null m'interesse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    select TITRE_SCOMITE,TITRE_COMTECH,TITRE_GTRAVAIL,NOM
    from SCOMITE,COMTECH,GTRAVAIL,PARTICIPANT
    where (select nom
           from PARTICIPANT
           where (PARTICIPANT.NUMEROSCO is not null
           or PARTICIPANT.NUMEROCOM is not null
           or PARTICIPANT.NUMEROGTR is not null  ));
    ps: sur la table participant on a les contraintes que je gère avec une ps(contrainte 1)

    1. un participant ne peut appartenir qu'a un organe(soit comité ou Sous Comité ou groupe)
    2. ensuite il y a une relation père fils entre participant et les autres tables
    3. il existe aussi une relation entre: |comtech-->scomite
    |scomite-->gtravail

    je remercie tout ce qui me liront jusqu'au bout.Ensuite si quelqu'un
    peut m'aider je prenneur pour toutes les propositions.

    Merci à tous.

  2. #2
    Membre habitué
    Inscrit en
    Février 2003
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 171
    Points : 126
    Points
    126
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select SC.TITRE_SCOMITE, CT.TITRE_COMTECH, GT.TITRE_GTRAVAIL, P.NOM
    from PARTICIPANT P
    INNER JOIN  SCOMITE SC ON P.NumeroSco = SC.Numero_sco
    INNER JOIN  COMTECH CT ON P.NumeroCom = Numero_sco
    INNER JOIN  GTRAVAIL GT ON P.NumeroGtr = Numero_gtr
     
    where PARTICIPANT.NUMEROSCO is not null
           or PARTICIPANT.NUMEROCOM is not null
           or PARTICIPANT.NUMEROGTR is not null

  3. #3
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    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 679
    Points : 954
    Points
    954
    Par défaut
    merci beaucoup pour votre reponse je prend en compte et je vous informe

  4. #4
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    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 679
    Points : 954
    Points
    954
    Par défaut
    j'ai bien essayé votre requête mais elle ne me ramène rien

    en effet voici le contenu de ma table Participant:


    NOM |NUMERO_SCO |NUMERO_COM |NUMERO_GTR

    devalender -----1----------------------------------------------
    cauphy -----1----------------------------------------------
    albert ------------------------1---------------------------
    jean -----------------------------------------------1------
    bernard -----------------------------------------------1------

    donc normalement apres votre requête voici ce que je devait avoir:

    NOM |TITRE_SCOMITE |TITRE_COMTECH |TITRE_GTRAVAIL

    devalender ---FRUIT-----------------------------------------------------
    cauphy ---FRUIT-----------------------------------------------------
    albert -------------------AGRICULTURE--------------------------
    jean -----------------------------------------------------MANGUE---
    bernar ------------------------------------------------------MANGUE---

    MAIS A LA PLACE J'ai des champs vide!

  5. #5
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    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 679
    Points : 954
    Points
    954
    Par défaut
    j'arrange un peu la lisibilité
    j'ai bien essayé votre requête mais elle ne me ramène rien

    en effet voici le contenu de ma table Participant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    NOM        |NUMERO_SCO  |NUMERO_COM  |NUMERO_GTR
     
    devalender -----1----------------------------------------------                  
    cauphy     ------1-----------------------------------------------
    albert     ----------------------------1---------------------------
    jean       -------------------------------------------------1------
    bernard    ------------------------------------------------1------
    donc normalement apres votre requête voici ce que je devait avoir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    NOM        |TITRE_SCOMITE   |TITRE_COMTECH    |TITRE_GTRAVAIL
     
    devalender ---FRUIT------------------------------------------ 	
    cauphy     -----FRUIT------------------------------------------
    albert     -------------------AGRICULTURE--------------------
    jean       -------------------------------------------------------MANGUE---
    bernard    -----------------------------------------------------MANGUE---
    MAIS A LA PLACE J'ai des champs vide!

  6. #6
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    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 679
    Points : 954
    Points
    954
    Par défaut
    j'espère que se sera la bonne!!
    j'ai bien essayé votre requête mais elle ne me ramène rien

    en effet voici le contenu de ma table Participant:


    NOM |NUMERO_SCO |NUMERO_COM |NUMERO_GTR

    devalender -----1---------------------------------
    cauphy -----1---------------------------------
    albert ----------------------------1--------------------
    jean ----------------------------------------------1------
    bernard --------------------------------------------1------

    donc normalement apres votre requête voici ce que je devait avoir:

    NOM |TITRE_SCOMITE |TITRE_COMTECH |TITRE_GTRAVAIL

    devalender ---FRUIT------------------------------------------
    cauphy ----FRUIT------------------------------------------
    albert --------------------------AGRICULTURE--------------------
    jean -----------------------------------------------------MANGUE---
    bernard ---------------------------------------------------MANGUE---

    MAIS A LA PLACE J'ai des champs vide!

    escuser pour ce multiple post c'est améliorer la lisibilité!!
    merci

  7. #7
    Membre habitué
    Inscrit en
    Février 2003
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 171
    Points : 126
    Points
    126
    Par défaut
    Et en enlevant la condition WHERE ?

  8. #8
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    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 679
    Points : 954
    Points
    954
    Par défaut
    je m'escuse pour le temp que je met pour repondre c'est du a de petit pb.
    bon je vais essayer sans la clause WHERE !
    et je vous tient au courant.

  9. #9
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    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 679
    Points : 954
    Points
    954
    Par défaut
    j'ai bel et bien supprimer la clause where mais je n'ai toujours rien comme resultat.
    néanmoin lorsque j'essai cette requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select P.nom, gt.titre_gtravail
    from participant p
    inner join gtravail gt on p.numerogtr=gt.numero_gtr
    where participant.numerogtr is not null;
    j'ai effectivement le nom du participant + titre du groupe de travail auquel il appartient.
    lorque j'ajoute le reste du code je n'ai plus rien comme resultat!

  10. #10
    Membre habitué
    Inscrit en
    Février 2003
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 171
    Points : 126
    Points
    126
    Par défaut
    Remplacez INNER JOIN par LEFT JOIN, soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select SC.TITRE_SCOMITE, CT.TITRE_COMTECH, GT.TITRE_GTRAVAIL, P.NOM
    from PARTICIPANT P
    LEFT JOIN  SCOMITE SC ON P.NumeroSco = SC.Numero_sco
    LEFT JOIN  COMTECH CT ON P.NumeroCom = Numero_sco
    LEFT JOIN  GTRAVAIL GT ON P.NumeroGtr = Numero_gtr
    Et sans mettre la clause WHERE.

  11. #11
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    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 679
    Points : 954
    Points
    954
    Par défaut
    ok c'est pris en compte je vous tient au courant
    merci

  12. #12
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    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 679
    Points : 954
    Points
    954
    Par défaut
    je pense cette fois c'est la bonne
    j'ai bien ce qu'il me fallait!
    Remplacez INNER JOIN par LEFT JOIN, soit :

    Code:
    select SC.TITRE_SCOMITE, CT.TITRE_COMTECH, GT.TITRE_GTRAVAIL, P.NOM
    from PARTICIPANT P
    LEFT JOIN SCOMITE SC ON P.NumeroSco = SC.Numero_sco
    LEFT JOIN COMTECH CT ON P.NumeroCom = Numero_sco
    LEFT JOIN GTRAVAIL GT ON P.NumeroGtr = Numero_gtr


    Et sans mettre la clause WHERE.
    : maintenant sans trop abuser de votre temps (j'aborde maintenant le sql !) quelle était la difference entre le:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INNER JOIN et LEFT JOIN
    merci

  13. #13
    Membre habitué
    Inscrit en
    Février 2003
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 171
    Points : 126
    Points
    126
    Par défaut
    Le plus simple est de lire ceci :

    http://sql.developpez.com/sqlaz/jointures/#L2.4

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

Discussions similaires

  1. Requête UNION sous Interbase 6 ...
    Par Djedjeridoo dans le forum InterBase
    Réponses: 2
    Dernier message: 27/07/2004, 09h08
  2. formatage des requêtes sous psql
    Par Bouboubou dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 03/02/2004, 11h10
  3. Syntaxe PARAMETERS pour requête sous VBA
    Par GAGNON dans le forum VBA Access
    Réponses: 3
    Dernier message: 28/11/2003, 11h39
  4. taille des integer sous Interbase 6.0
    Par kinda dans le forum InterBase
    Réponses: 4
    Dernier message: 04/04/2003, 11h34
  5. Requete requête sous sybase
    Par eddie dans le forum Sybase
    Réponses: 3
    Dernier message: 02/04/2003, 14h51

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