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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  mysql : jointure a gauche et a droite.. est-ce fesable ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

mysql : jointure a gauche et a droite.. est-ce fesable ?

n°363902
wouatouwou​atou
Posté le 16-04-2003 à 19:20:19  profilanswer
 

euh. en fait, mon pb c comment kon fait de telles jointures en mysql ?
 
un truc du genre
 
select t1.a, t1.b, t2.c from t1, t2
where t1.a = 1 and t1.c =+ t2.a
 
enfin.. le truc c ke mm si t1.c != t2.a alors l'enregistrement est qd mm pris en compte.
 
Merci d'avancepour l'aide... :D


Message édité par wouatouwouatou le 16-04-2003 à 19:59:25
mood
Publicité
Posté le 16-04-2003 à 19:20:19  profilanswer
 

n°363914
mrbebert
Posté le 16-04-2003 à 19:38:07  profilanswer
 

Si tu prends tous les enregistrements, même ceux "différents", ce n'est plus la peine de mettre cette condition [:figti]  
 
select t1.a, t1.b, t2.c
from t1, t2  
where t1.a = 1


Message édité par mrbebert le 16-04-2003 à 19:38:28
n°363916
wouatouwou​atou
Posté le 16-04-2003 à 19:43:18  profilanswer
 

:??:

n°363918
mrbebert
Posté le 16-04-2003 à 19:49:31  profilanswer
 

mais encore :D

n°363920
wouatouwou​atou
Posté le 16-04-2003 à 19:56:52  profilanswer
 

en fait... est-ce que de telles jointure sont fesables en mysql ?
 
au fait, le truc de l'exemple...
euh... c t ptet pa assez clair.. dsl :D
 
je tente nu nouvel essai :p
 
select t1.a, t1.b, t2.c from t1, t2  
where t1.a = 1 and t1.c =+ t2.a  
 
est sensé me retourner tous les enregistrements avec t1.a valant 1 ... meme si t1.c != t2.a
Mais si t1.c = t2.a alors jaurais mon fameux t2.c dans le meme enregistrement...
sinon, j'obtiendrai un 'simple' produit cartesien des deux tables... enfin, je crois.. j'espere du moins ke c plu clair
 
Merci encore pour ton interet :jap:

n°363928
mrbebert
Posté le 16-04-2003 à 20:07:27  profilanswer
 

Tu veux toutes les lignes avec t1.a qui vaut 1, ca, d'accord :)  
 
C'est pour t2 que je comprends pas. Tu veux toutes les lignes de t2, quelque soit la valeur de t2.a ??
Ou seulement celles où t2.a = t1.c, s'il y en a ???

n°363933
MagicBuzz
Posté le 16-04-2003 à 20:13:26  profilanswer
 

écrit ta requête en format à la con :
 
select t1.a, t1.b, nvl(t2.c, ' ';) from t1 left outer join t2 on t1.c = t2.a
where t1.a = 1
 
il me semble que ça passe sous mysql
 
PS: "nvl" est la fonction qui permet d'échapper la valeur "NULL" sour Oracle.
 
Je sais pas si MySQL en a besoin, mais sous Oracle, il faut absoluement l'échapper, sinon ça retourne rien. SQL Server de M$ n'a pas ce problème (Oracle c'est super standard, ça fait plaisir :D


Message édité par MagicBuzz le 16-04-2003 à 20:15:23
n°363935
wouatouwou​atou
Posté le 16-04-2003 à 20:15:09  profilanswer
 

ben les deux je dirais.. :D
 
je veux celle de t2.c s'il yen a et bien sur.. celles-ci seront dnas le mm enregistrement que t1.a et t1.b
Mais si par hasard t1.c ne fait pa partie de t2... alors l'enregistrement t1.a et t1.b est qd mm retourné...
 
Ben.. en bref.. une jointure a gauche.. koi (ou ptet a droite,bref jsais plus le sens :D )

n°363948
mrbebert
Posté le 16-04-2003 à 20:25:56  profilanswer
 

oui, c'est un left join :)  
 
SELECT t1.a, t1.b, t2.c
FROM t1
LEFT JOIN t2 ON t1.c = t2.a
WHERE t1.a = 1
 
Ca fait pareil qu'une jointure normale sauf que, en plus, ca ramène quand même les lignes de t1 où a = 1 et qui n'ont pas leur équivalent dans t2. Dans ce cas, t2.c sera à NULL.
 
MagicBuzz > Ca fait quoi "nvl(t2.c, ' ';)" :??:


Message édité par mrbebert le 16-04-2003 à 20:26:36
n°363951
wouatouwou​atou
Posté le 16-04-2003 à 20:30:28  profilanswer
 

cool. je test de suite.. pour nvl.. je crois que ca te met ' ' si t2.C vaut null :)

mood
Publicité
Posté le 16-04-2003 à 20:30:28  profilanswer
 

n°363952
MagicBuzz
Posté le 16-04-2003 à 20:31:15  profilanswer
 

j'ai expliqué dans le "PS" : c'est une bidouille pour qu'Oracle soit capable de faire un left join, sinon il zappe quand même les lignes où t2 est vide :/

n°363956
wouatouwou​atou
Posté le 16-04-2003 à 20:35:07  profilanswer
 

euh.. merci ... ca a lair de marcher..
 
pour le nvl.. je lai pa mis et ca a lair de passer...
Et pis, jai pas mis outer... ca fait une difference ?

n°363960
mrbebert
Posté le 16-04-2003 à 20:38:14  profilanswer
 

MagicBuzz a écrit :

j'ai expliqué dans le "PS" : c'est une bidouille pour qu'Oracle soit capable de faire un left join, sinon il zappe quand même les lignes où t2 est vide :/

Ca lui pose un problème que le t2.c soit NULL dans le résultat :??:

n°363961
mrbebert
Posté le 16-04-2003 à 20:41:06  profilanswer
 

wouatouwouatou a écrit :

euh.. merci ... ca a lair de marcher..
 
pour le nvl.. je lai pa mis et ca a lair de passer...
Et pis, jai pas mis outer... ca fait une difference ?

Pour le nvl(), l'équivalent sous mysql est IFNULL().
IFNULL(a, b) renvoie b si a est à NULL, sinon il renvoie a.
 
Mais ca dépend de ce que tu veux faire. Tu peux vouloir conserver le NULL pour faire facilement la distinction, ou aucontraire le remplacer par une valeur par défaut.
 
Pour le outer, je pense que mysql accepte les 2 syntaxes, ca revient au même :)

n°363967
wouatouwou​atou
Posté le 16-04-2003 à 20:43:00  profilanswer
 

merci.. :jap:
juste ce que je cherchais.. lol
 
a propos de mon second post :D

n°363971
MagicBuzz
Posté le 16-04-2003 à 20:47:18  profilanswer
 

mrBebert a écrit :

Ca lui pose un problème que le t2.c soit NULL dans le résultat :??:  


pour oracle, oui :/


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

  mysql : jointure a gauche et a droite.. est-ce fesable ?

 

Sujets relatifs
[PHP/mysql] afficher une partie d'un tableau[MySQL] Comment gérer les clefs étrangères ?
Probleme de connexion a MySQL ...mysql / Visual basic
mysql / Visual basic[MySQL] Copier le contenu d'un champ dans un autre.
[mySql]SELECT le dérnier enregistrement inséré! je cherche la synthaxe[PHP-MySQL] Quel portail utiliser chez free ?
rechercher tous les noms qui commence par 'ant' ! Cherch synthax mysql[HTML (ou php ?)] Enregistrer la cible direct avec un clic gauche
Plus de sujets relatifs à : mysql : jointure a gauche et a droite.. est-ce fesable ?


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