Précédent   Forum des professionnels en informatique > Bases de données > Autres SGBD > InterBase
InterBase Forum d'entraide sur le SGBD InterBase de Codegear. Avant de poster -> F.A.Q Interbase, Tutoriels
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/08/2004, 12h33   #1
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
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 :
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 :
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.
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2004, 13h44   #2
Membre régulier
 
Inscription : février 2003
Messages : 165
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 165
Points : 94
Points : 94
Salut,

Code :
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
SebCBien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2004, 16h01   #3
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
merci beaucoup pour votre reponse je prend en compte et je vous informe
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2004, 20h06   #4
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
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!
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2004, 20h10   #5
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
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 :
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 :
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!
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2004, 20h13   #6
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
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
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2004, 22h28   #7
Membre régulier
 
Inscription : février 2003
Messages : 165
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 165
Points : 94
Points : 94
Et en enlevant la condition WHERE ?
SebCBien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2004, 10h47   #8
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
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.
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2004, 17h05   #9
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
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 :
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!
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2004, 18h22   #10
Membre régulier
 
Inscription : février 2003
Messages : 165
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 165
Points : 94
Points : 94
Remplacez INNER JOIN par LEFT JOIN, soit :

Code :
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.
SebCBien est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2004, 10h30   #11
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
ok c'est pris en compte je vous tient au courant
merci
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2004, 14h31   #12
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
je pense cette fois c'est la bonne
j'ai bien ce qu'il me fallait!
Citation:
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 :
1
2
 
INNER JOIN et LEFT JOIN
merci
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2004, 16h41   #13
Membre régulier
 
Inscription : février 2003
Messages : 165
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 165
Points : 94
Points : 94
Le plus simple est de lire ceci :

http://sql.developpez.com/sqlaz/jointures/#L2.4
SebCBien est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h07.


 
 
 
 
Partenaires

Hébergement Web