question de base : qu'est ce que fait une jointure ? [sql ] - Divers - Programmation
Marsh Posté le 08-05-2003 à 17:02:09
airseb a écrit : ça met en commun tout les champs de 2 tables en une seule ou seulement les champs en commun ? |
une jointure permet d'établir une relation entre deux tables :
par exemple --> on établit qu'un forumeur à un boulay associé
j'ai une table forumeur avec comme champ :
- forumeur_identifiant
- forumeur_pseudo
- forumeur_mail
- forumeur_boulay_id
et une table boulay dans laquelle se trouve les infos relatives au boulay :
- boulay_id
- boulay_pseudo
- boulay_themesdepredilection
- boulay_multis
dans cet exemple on peut connaitre le pseudo de chaque boulet associé au pseudo de chaque forumeur en faisant une jointure sur forumeur_boulay_id et boulay_id
SELECT F.forumeur_pseudo, B.boulay_pseudo from forumeur F, boulay B WHERE F.forumeur_boulay_id=B.boulay_id;
-
Marsh Posté le 08-05-2003 à 17:04:16
Ca renvoie toutes les lignes possibles constituées d'une ligne de la 1ère table et d'une de la 2ème.
Donc, ca fait un volume d'informations qui augmenbte très rapidement : une jointure entre 2 tables de 100 enregistrements renvoie 10.000 lignes. 1 millions avec 3 tables de 100 enregisrements.
Mais toutes ces lignes ont rarement un intérêt. Généralement, on se contente de celles "qui vont bien ensembles", en définissant des conditions dans la partie "WHERE" de la requête.
Marsh Posté le 08-05-2003 à 17:05:05
mouais, sauf que la, c'est une jointure de merde quand y a pas moyen de faire autrement.
En fait, il y a 3 types de jointures en SQL standard: INNER, LEFT et RIGHT.
INNER ne prend les enregistrements dans les deux tables QUE s'il existe une valeur commune dans les champs comparés
LEFT prend tous les champs de la première table et uniquement les champs de la deuxième s'il existe une valeur commune dans les champs comparés
RIGHT fait la même chose que left, mais à l'envers.
Marsh Posté le 08-05-2003 à 17:17:16
gizmo a écrit : mouais, sauf que la, c'est une jointure de merde quand y a pas moyen de faire autrement. |
on dirait que j'ai trouvé mon maitre
(du reste, je suis bien d'accord avec toi sur les précisions que tu as apporté )
Marsh Posté le 08-05-2003 à 17:29:59
personne
--------
nom num_voiture
roger 1
alfred 2
gutenger 3
voiture
--------
numero couleur
1 vert
2 jaune
3 gris
une jointure va te servir a aller rechercher la couleur de la voiture d'une personne donnee
select personne.nom, voiture.couleur from personne, voiture where personne.num_voiture = voiture.numero
and personne.nom = 'roger';
resultat :
nom couleur
------------------
roger vert
c'est a ca que ca sert une jointure.
> simogeo : ton explication etait bonne mais pas tres explicite
Marsh Posté le 08-05-2003 à 16:50:42
ça met en commun tout les champs de 2 tables en une seule ou seulement les champs en commun ?
merci.