Requete jointure externe

Fermé
letissya Messages postés 89 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 8 novembre 2005 - 7 juil. 2003 à 13:50
blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024 - 7 juil. 2003 à 15:38
Bonjour à tous...
j'ai une petite question pour la construction d'une requete

j'ai deux tables :

VOL (cle_vol, date_vol, immatriculation_vol)
MESSAGE(cle_message, cle_vol)

et j'aimerais avoir la liste des vols à partir d'une date et savoir si un message particulier est sur le vol, enfin quelque chose comme ça... :

cle_vol cle_message
1 212
2 212
3
4 212
5 212
6
7
8 212

...

pour le moment j'ai fait

select v.cle_vol,
m.cle_message

from vol v,
message m

where v.cle_vol=m.cle_vol(+) and
v.immatriculation ='aaa' and
p.cle_message = 212 and
v.date_vol >= to_date ('06-jan-03')

mais ça me donne que les vols où la cle_message=212..
les autres ne sont pas retenus...

si vous avez une solution.. ou une idée à me donner merci...


Letissya

10 réponses

blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024 3 287
7 juil. 2003 à 14:05
Bonjour,

C'est quoi comme base ? (pour savoir quel SQL)

Si tu fais "p.cle_message is not null" au lieu de " p.cle_message = 212", ça donne quoi ?

A+ Blux
 "Les cons, ça ose tout.

C'est même à ça qu'on les reconnait"
0
Pitu Messages postés 1440 Date d'inscription jeudi 3 octobre 2002 Statut Contributeur Dernière intervention 5 janvier 2013 125
7 juil. 2003 à 14:09
Bonjour Letssya.

Dans ta clause where, tu as mis "and p.cle_message = 212"
Il est donc normal que cette requête ne te sorte que les vols pour lesquels la cle_message est 212.
En fait, si j'ai bien compris, tu voudrais en résultat la liste des vols postérieurs à une certaine date, avec à côté le message éventuel s'y rapportant.
Tu n'as pas besoin pour ça de rajouter la clause sur cle_message à mon avis.
Si je me trompe sur la bonne compréhension de ton pb, n'hésites pas à en remettre une couche.
a+

  (:•Þ  Pitu  (Apprenti Ipl)
0
letissya Messages postés 89 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 8 novembre 2005 5
7 juil. 2003 à 14:19
oui je suis d'accord avec toi, j'ai essayé d'enlever la condition p.cle_message = 212


pour la description du problème tu as tout compris... sauf que je veux un message bien précis (ex : 212) et pas un autre...

Letissya
0
Pitu Messages postés 1440 Date d'inscription jeudi 3 octobre 2002 Statut Contributeur Dernière intervention 5 janvier 2013 125 > letissya Messages postés 89 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 8 novembre 2005
7 juil. 2003 à 14:24
:o( Ouuuuiiiiiiiiiinnnnnn ... Je comprends plus rien ...

Tu veux la liste des vols en faisant une jointure sur tes 2 tables, mais tu ne veux QUE ceux qui ont le message 212, c'est ça ?
(Je ne parle pas de date, puisque tu as résolu ce pb).
Ben ... c'est pas ce que tu as obtenu avec ta requête ?
Non, bien évidemment, puisque tu pose la question. Mais là, je ne comprends pas ...
  (:•Þ  Pitu  (Apprenti Ipl)
0
letissya Messages postés 89 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 8 novembre 2005 5
7 juil. 2003 à 14:13
ORACLE7

ben ça me donne un truc comme ça :

1 512
1 847
1 582
2 987
2 986
2 957
2 212

...

Letissya
0
blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024 3 287
7 juil. 2003 à 14:23
Ca veut donc dire qu'il y plusieurs messages possibles pour chaque vol, il faut bien mettre le numéro de message pour avoir le message particulier.

Je crains cependant de ne pas avoir tout compris l'énoncé du problème... peux-tu en rajouter (ou le reposer en d'autres termes) ?

A+ Blux
 "Les cons, ça ose tout.

C'est même à ça qu'on les reconnait"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
letissya Messages postés 89 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 8 novembre 2005 5
7 juil. 2003 à 14:35
oui il peut y avoir plusieurs messages sur un vol...
dans la table message je peux avoir ça :

MESSAGE :
cle_message cle_vol
212 1
578 1
587 2
212 6
587 3
986 3
512 6
212 4
878 5
965 5
125 3


et moi ce que je voudrais obtenir en fait c'est

cle_vol cle_message
1 212
2
3
4 212
5
6 212


en fait je veux avoir tous les vols à partir d'une certaine date... et que pour chaque vol je puisse savoir si un message particulier est apparu ou non..
je ne veux pas juste les vols où ce message est apparu... je veux aussi les vols où le message n'est pas apparu même s'il y a eu des messages différents ou pas de messages du tout...

c'est plus clair ?



Letissya
0
Fu Xuen Messages postés 3639 Date d'inscription jeudi 24 avril 2003 Statut Contributeur Dernière intervention 11 septembre 2005 305
7 juil. 2003 à 14:36
Je crois effectivement que la contradiction est dans l'énoncé du problème :).

-= Fu Xuen =-
0
blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024 3 287
7 juil. 2003 à 14:44
v.cle_vol=m.cle_vol(+) serait à mettre dans la jointure et non dans le where, c'est-à-dire

SELECT ...
ON v.cle_vol=m.cle_vol(+)
WHERE

Ca irait pas mieux ?

A+ Blux
 "Les cons, ça ose tout.

C'est même à ça qu'on les reconnait"
0
Pitu Messages postés 1440 Date d'inscription jeudi 3 octobre 2002 Statut Contributeur Dernière intervention 5 janvier 2013 125
7 juil. 2003 à 14:48
C'est du sql Oracle, ça ?

  (:•Þ  Pitu  (Apprenti Ipl)
0
letissya Messages postés 89 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 8 novembre 2005 5
7 juil. 2003 à 14:48
ben non car le (+) c'est la jointure...
sinon il faut que j'utilise OUTER JOIN et pas le (+)... mais ma version d'ORACLE ne supporte pas la syntaxe avec JOIN..
donc, je ne pense pas que ça vienne de là.. je crois plutot que je doit faire deux requetes ... pour arriver à mes fins...

Letissya
0
Pitu Messages postés 1440 Date d'inscription jeudi 3 octobre 2002 Statut Contributeur Dernière intervention 5 janvier 2013 125
7 juil. 2003 à 14:52
Là, c'est sûr que tu arriveras à ce que tu cherches.
C'est pas top, mais ...
Parfois, le Mieux est l'ennemi du Bien
  (:•Þ  Pitu  (Apprenti Ipl)
0
blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024 3 287
7 juil. 2003 à 14:55
as-tu essayé ce que j'ai donné ?

A+ Blux
 "Les cons, ça ose tout.

C'est même à ça qu'on les reconnait"
0
letissya Messages postés 89 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 8 novembre 2005 5 > blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024
7 juil. 2003 à 14:57
c'est à dire ??

la condition après le ON ... ça ne fonctionne pas parce que c'est une commande qui n'est pas compatible avec ORACLE... (mais j'ai quand meme essayée si c'est ce que tu veux savoir ..)

Letissya
0
blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024 3 287 > blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024
7 juil. 2003 à 15:06
C'est curieux, car en ORACLE 9, ça marche bien (et ça doit pas être nouveau) :

SELECT ...
FROM ...
ON ...
WHERE ...;

A+ Blux
 "Les cons, ça ose tout.

C'est même à ça qu'on les reconnait"
0
letissya Messages postés 89 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 8 novembre 2005 5 > blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024
7 juil. 2003 à 15:13
ben moi j'ai une erreur, je ne peux pas executer le requete.. :o(

Letissya
0
Pitu Messages postés 1440 Date d'inscription jeudi 3 octobre 2002 Statut Contributeur Dernière intervention 5 janvier 2013 125
7 juil. 2003 à 14:51
Hmm, Hmm ...
alors, plutôt que d'effectuer une jointure, tu devrais peut-être essayer avec des select imbriqués ...
Non ?

  (:•Þ  Pitu  (Apprenti Ipl)
0
letissya Messages postés 89 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 8 novembre 2005 5
7 juil. 2003 à 14:54
ben j'ai quand meme des contraintes de temps d'execution.. alors les requetes imbriquées j'essais d'éviter... enfin je vais voir...


Letissya
0