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

 


Dernière réponse
Sujet : sql: toujours moi :D : jointure externe
thegti 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 ...

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
thegti 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 ...
Fred999 '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]

wouatouwouatou 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....
Fred999 J'y jetterai un oeil demain, là il est trop tard pour que je me concentre sur autre chose que mon travail.
Fred999

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

wouatouwouatou 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]

thegti 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
wouatouwouatou 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]

thegti 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
thegti :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
wouatouwouatou 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:
Fred999 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?
wouatouwouatou non... jsuis pas en stage... :D
Fred999 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???
wouatouwouatou sous oracle c l'inverse de sql-server...
oracle : t2.c1=t1.c1(+)
sql-server : t1.c1=*t2.c1
...
Fred999 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.
wouatouwouatou Le pb. c ke ces deux conditions semblent incompatibles...
 
and t1.c1 *= t2.c1  
and t1.c2 = n  
 
:(
Fred999 ...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
thegti Putain !
Oracle il avoir a interpréter ca ?
wouatouwouatou 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)
jupiler 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
trictrac 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....
wouatouwouatou 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]


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)