Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
708 connectés 

  FORUM HardWare.fr
  Programmation

  sql: toujours moi :D : jointure externe

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

sql: toujours moi :D : jointure externe

n°25519
wouatouwou​atou
Posté le 18-04-2001 à 12:01:27  profilanswer
 

si on fait un truc du genre:
 
select t2.c1, t2.c2, max(t1.c3)
from t1, t2
where t2.c1=m and t1.c1(+)=t2.c1 and t1.c2=n
group by t2.c1, t2.c2
 
Est-ce ke si t1.c1 n'existe pas pour t2.c1, la condition t1.c2=n est calculee ?
Bref, comment faire pour ke si t1.c1 n'existe pas ben j'ai qd meme un resultat ?

 

[edit]--Message édité par wouatouwouatou--[/edit]


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
mood
Publicité
Posté le 18-04-2001 à 12:01:27  profilanswer
 

n°25539
trictrac
Posté le 18-04-2001 à 13:04:44  profilanswer
 

je suis super interresse, car j'ai un pb identique (je pense): j'exploite une cle etrangere qui peut etre vide, donc comment faire pour lui dire que si elle est vide, on veut quand meme un record, mais sans les champs 'etrangers'
Je suis pas forcement clair, mais bon....

n°25545
jupiler
Un cousin...
Posté le 18-04-2001 à 13:10:54  profilanswer
 

essaye :
 
 
select t2.c1, t2.c2, max(t1.c3)  
from t1, t2  
where t2.c1=m and t1.c1(+)=t2.c1 and t1.c2 (+) =n  
group by t2.c1, t2.c2


---------------
Je ne suis ni pour, ni contre, bien au contraire  
n°25551
wouatouwou​atou
Posté le 18-04-2001 à 13:24:17  profilanswer
 

en fait mon truc c ca:
 
select t2.c1, t2.c2, max(t1.c3)  
from t1, t2, t3
where t2.c1=m and t1.c1(+)=t2.c1 and t1.c2=n and t1.c4=t3.c4
and t3.c2='xx'
group by t2.c1, t2.c2
having max(t1.c3)<=max(t2.c3)
 
je sais ke c chelou mais le pb c ke t1.c1=t2.c1 est toujours vrai
mais ce ki le rend faux ce sont les conditions d'apres, dont une jointure (en realité, j'en ai deux jointures apres mais bon)


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
n°25554
thegti
La constipation se soigne ...
Posté le 18-04-2001 à 13:30:36  profilanswer
 

Putain !
Oracle il avoir a interpréter ca ?

n°25556
Fred999
Rabat-joie
Posté le 18-04-2001 à 13:32:34  profilanswer
 

...tu peux tenter
(syntaxe Transact-SQL)
 
select t2.c1, t2.c2, isnull (max(t1.c3), "toto" )
from t1, t2  
where t2.c1 = m
and t1.c1 *= t2.c1
and t1.c2 = n  
group by t2.c1, t2.c2

n°25574
wouatouwou​atou
Posté le 18-04-2001 à 14:05:29  profilanswer
 

Le pb. c ke ces deux conditions semblent incompatibles...
 
and t1.c1 *= t2.c1  
and t1.c2 = n  
 
:(


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
n°25587
Fred999
Rabat-joie
Posté le 18-04-2001 à 14:18:21  profilanswer
 

D'après mes archives, tu as inversé le sens de la jointure...
 
A gauche, tu mets la table pour laquelle la condition est TOUJOURS vérifiée.
 
A droite, la table qui ne la vérifiera qu'éventuellement.

n°25594
wouatouwou​atou
Posté le 18-04-2001 à 14:27:26  profilanswer
 

sous oracle c l'inverse de sql-server...
oracle : t2.c1=t1.c1(+)
sql-server : t1.c1=*t2.c1
...


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
n°25602
Fred999
Rabat-joie
Posté le 18-04-2001 à 14:33:19  profilanswer
 

OK. Donc, en SQL Server, toujours d'après mes archives, ce devrait être :
 
t2.c1 *= t1.c1
 
On va y arriver.
 
 
Dis-moi, tu es en stage???

mood
Publicité
Posté le 18-04-2001 à 14:33:19  profilanswer
 

n°25662
wouatouwou​atou
Posté le 18-04-2001 à 15:35:59  profilanswer
 

non... jsuis pas en stage... :D


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
n°25669
Fred999
Rabat-joie
Posté le 18-04-2001 à 15:48:15  profilanswer
 

Ah OK :D
 
Remarque je me moque, mais j'en ai posé des questions après mon stage. Sauf qu'on n'avait pas Internet...
 
Et ça marche ton truc finalement?

n°25676
wouatouwou​atou
Posté le 18-04-2001 à 16:03:51  profilanswer
 

non... pas tout a fait... il manque un cas.. mais je me penche
du cote d'un union...
La jointure semble inadequate..
Ca fait deja une semaine ke jsuis dessus :cry:


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
n°25680
thegti
La constipation se soigne ...
Posté le 18-04-2001 à 16:07:52  profilanswer
 

:lol: :lol: :lol:
 
Oh l'insulte !!! Trop fort !!!
 
Je confirme wouatouwouatou n'est pas en stage
 
Pour t'aider:
 
and t1.c1 *= t2.c1  
and t1.c2 = n
 
Rien d'anormal jointure externe à gauche + filtrage

n°25687
thegti
La constipation se soigne ...
Posté le 18-04-2001 à 16:17:52  profilanswer
 

Par contre
ca je vois pas trop l'intérêt:
 
t2.c1 = m  
and t1.c1 *= t2.c1  
 
en mettant la condition sur t2.c1 égal à m, tu enlève des résultats toutes les enregistrements de t1 qui ne joignent pas avec t2 car dans ce cas t2.c1 est null
 
soit tu fais
 
t2.c1 = m  
and t1.c1 = t2.c1  
 
soit
 
t2.c1 =* m  
and t1.c1 *= t2.c1

n°25694
wouatouwou​atou
Posté le 18-04-2001 à 16:38:37  profilanswer
 

Moi c dans l'autre sens...
thegti> jette un coup d'oeil sur mon autre topic...
tu comprendra mon pb.
Plz penche toi unpeu dessus...Jsuis sur ke ca les doigts dans le nez pour toi !!!
Sinon, avec l'union jai pas reussi a trouver... :(
Mais comment faire? avec la jointure c presque ca..:(
J'avais oublié le lien vers le topic:
http://forum.hardware.fr/sqlforum/ [...] ache=cache
j'espere ke c le bon :)

 

[edit]--Message édité par wouatouwouatou--[/edit]


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
n°25712
thegti
La constipation se soigne ...
Posté le 18-04-2001 à 17:06:40  profilanswer
 

Bon la j'ai beau cherché je vois pas ce que tu veut faire avec ca:
 
select t2.c1, t2.c2, max(t1.c3)    
from t1, t2
where t2.c1=m and t1.c1(+)=t2.c1 and t1.c2=n and t1.c4=t3.c4  
and t3.c2='xx'  
group by t2.c1, t2.c2  
having max(t1.c3)<=max(t2.c3)  
 
C'est quoi le but de la requête ?
 
En tout cas:  
t2.c1=m and t1.c1(+)=t2.c1 and t1.c2=n  
ca va pas
tu perds tout l'interêt de la jointure externe

n°25734
wouatouwou​atou
Posté le 18-04-2001 à 17:42:57  profilanswer
 

j'ai une table t1, ki contient entre autres, une date (c3),
un id (c1) et une valeur (c4).  
t1 est reliee a une table t2 via une colonne c1 (FK).
t2 contient en plus deux champs c2 et c3 (nom), ou c2 est un FK d'une table t3.
t3 contient un champ c1 (PK) et un champ c2 (description-simple valeur).
 
Donc, je veux les noms de description 'xx' les plus récents.
Mais un nom peut avoir plusieurs valeurs.  
Donc, si un nom possede plus d'une valeur, je veux les deux valeurs les plus récentes.
Sinon, la plus récente et une valeur null pour l'autre.  
Les deux valeurs doivent etre obtenues sur la meme ligne (en même temps).
 
Jsais pas si c clair mais voila mon pb.. ki me torture depuis une semaine !!!!

 

[edit]--Message édité par wouatouwouatou--[/edit]


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
n°25735
Fred999
Rabat-joie
Posté le 18-04-2001 à 17:44:37  profilanswer
 

wouatouwouatou a écrit a écrit :

Moi c dans l'autre sens...
thegti> jette un coup d'oeil sur mon autre topic...
tu comprendra mon pb.
Plz penche toi unpeu dessus...Jsuis sur ke ca les doigts dans le nez pour toi !!!
 




 
KOMMENT CA? ET MOOI ALORS???
 
KI T'A PONDU UN SCRIPT L'AUTRE FOOIS???
 
 
Ho l'autre hé, moi je ne t'aide plus :o

n°25737
Fred999
Rabat-joie
Posté le 18-04-2001 à 17:45:34  profilanswer
 

J'y jetterai un oeil demain, là il est trop tard pour que je me concentre sur autre chose que mon travail.

n°25741
wouatouwou​atou
Posté le 18-04-2001 à 17:48:53  profilanswer
 

toutes mes excuses Fred999 :jap::jap::jap::jap::jap::jap::jap::jap::jap::jap::jap::jap:
Mais c valable pour toi aussi :D
J'ai besoin de toute l'aide possible :)
Ca commence a me prendre le chou cette histoire de plus récente en même temps des dates et tout ce sql....


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
n°25746
Fred999
Rabat-joie
Posté le 18-04-2001 à 17:58:36  profilanswer
 

'spèce de fayot  :lol:  
 
Non, t'es le seul que je puisse aider dans ce forum, t'as de la chance :D

 

[edit]--Message édité par Fred999--[/edit]

n°25747
thegti
La constipation se soigne ...
Posté le 18-04-2001 à 18:02:35  profilanswer
 

ouais
je comprends encore moins
tu mets dans la requête:
 
....
and t3.c2='xx'  
....
 
puis
 
....
t2 contient deux champs c2 et c3 (nom), ou c2 est un FK d'une table t3.  
....
Donc, je veux les noms de description 'xx' les plus récents.  
....
 
le champ nom c'est c2 ou c3 et c'est dans t2 ou t3 ?
Donne la vrai requête avec les vrais noms de champs parce que là c'est incompréhensible ...

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  sql: toujours moi :D : jointure externe

 

Sujets relatifs
Comment executer un programme externe en HTML...??[SQL Server] Référencement d'une base externe ?!?
Feuille de style externe : whatizit ?Feuille de style externe
[Visual C++] problème pour ouvrir un prog externe grace a shellexecute 
Plus de sujets relatifs à : sql: toujours moi :D : jointure externe


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR