Avec MySQL (je ne connais pas d'autre SGBD), je peux effectuer une jointure
naturelle avec trois tables du type :
table1 NATURAL JOIN table2 NATURAL JOIN table3
J'obtiens alors le résultat attendu c'est à dire une jointure de mes trois
tables sur les champs dont les noms sont identiques, avec seulement les
lignes où ces champs sont renseignés.
Avec 2 tables, si je veux afficher aussi les lignes où l'un des champs est
NULL, je n'ai qu'à remplacer NATURAL JOIN par LEFT JOIN en mettant à gauche
la table "directrice"...
C'est ce dernier résultat que je n'arrive pas à obtenir avec 3 tables : je
voudrais obtenir aussi les lignes pour lesquelles un certain champ (utilisé
pour la jointure) est NULL.
"table1 LEFT JOIN table2 LEFT JOIN table3" provoque une erreur, de même que
toute combinaison de LEFT, de NATURAL et de ','
Un LEFT JOIN sur plus de 2 tables est-il possible ?
Sinon pourquoi ? (Peut-être que ça n'a pas de sens, j'ai encore du mal à me
représenter tout ça)
Comment obtenir autrement l'équivalent d'un NATURAL JOIN avec en plus les
lignes ou un champ est NULL ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fred BROUARD - SQLpro
a lire : http://sqlpro.developpez.com/SQL_AZ_3.html#JOIN_externes http://sqlpro.developpez.com/SQL_AZ_3.html#JOIN_natural
A +
Laurent a écrit:
Bonjour
Avec MySQL (je ne connais pas d'autre SGBD), je peux effectuer une jointure naturelle avec trois tables du type :
table1 NATURAL JOIN table2 NATURAL JOIN table3
J'obtiens alors le résultat attendu c'est à dire une jointure de mes trois tables sur les champs dont les noms sont identiques, avec seulement les lignes où ces champs sont renseignés.
Avec 2 tables, si je veux afficher aussi les lignes où l'un des champs est NULL, je n'ai qu'à remplacer NATURAL JOIN par LEFT JOIN en mettant à gauche la table "directrice"...
C'est ce dernier résultat que je n'arrive pas à obtenir avec 3 tables : je voudrais obtenir aussi les lignes pour lesquelles un certain champ (utilisé pour la jointure) est NULL.
"table1 LEFT JOIN table2 LEFT JOIN table3" provoque une erreur, de même que toute combinaison de LEFT, de NATURAL et de ','
Un LEFT JOIN sur plus de 2 tables est-il possible ? Sinon pourquoi ? (Peut-être que ça n'a pas de sens, j'ai encore du mal à me représenter tout ça) Comment obtenir autrement l'équivalent d'un NATURAL JOIN avec en plus les lignes ou un champ est NULL ?
Merci pour toute aide.
-- Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************
a lire :
http://sqlpro.developpez.com/SQL_AZ_3.html#JOIN_externes
http://sqlpro.developpez.com/SQL_AZ_3.html#JOIN_natural
A +
Laurent a écrit:
Bonjour
Avec MySQL (je ne connais pas d'autre SGBD), je peux effectuer une jointure
naturelle avec trois tables du type :
table1 NATURAL JOIN table2 NATURAL JOIN table3
J'obtiens alors le résultat attendu c'est à dire une jointure de mes trois
tables sur les champs dont les noms sont identiques, avec seulement les
lignes où ces champs sont renseignés.
Avec 2 tables, si je veux afficher aussi les lignes où l'un des champs est
NULL, je n'ai qu'à remplacer NATURAL JOIN par LEFT JOIN en mettant à gauche
la table "directrice"...
C'est ce dernier résultat que je n'arrive pas à obtenir avec 3 tables : je
voudrais obtenir aussi les lignes pour lesquelles un certain champ (utilisé
pour la jointure) est NULL.
"table1 LEFT JOIN table2 LEFT JOIN table3" provoque une erreur, de même que
toute combinaison de LEFT, de NATURAL et de ','
Un LEFT JOIN sur plus de 2 tables est-il possible ?
Sinon pourquoi ? (Peut-être que ça n'a pas de sens, j'ai encore du mal à me
représenter tout ça)
Comment obtenir autrement l'équivalent d'un NATURAL JOIN avec en plus les
lignes ou un champ est NULL ?
Merci pour toute aide.
--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto:brouardf@club-internet.fr ******************
a lire : http://sqlpro.developpez.com/SQL_AZ_3.html#JOIN_externes http://sqlpro.developpez.com/SQL_AZ_3.html#JOIN_natural
A +
Laurent a écrit:
Bonjour
Avec MySQL (je ne connais pas d'autre SGBD), je peux effectuer une jointure naturelle avec trois tables du type :
table1 NATURAL JOIN table2 NATURAL JOIN table3
J'obtiens alors le résultat attendu c'est à dire une jointure de mes trois tables sur les champs dont les noms sont identiques, avec seulement les lignes où ces champs sont renseignés.
Avec 2 tables, si je veux afficher aussi les lignes où l'un des champs est NULL, je n'ai qu'à remplacer NATURAL JOIN par LEFT JOIN en mettant à gauche la table "directrice"...
C'est ce dernier résultat que je n'arrive pas à obtenir avec 3 tables : je voudrais obtenir aussi les lignes pour lesquelles un certain champ (utilisé pour la jointure) est NULL.
"table1 LEFT JOIN table2 LEFT JOIN table3" provoque une erreur, de même que toute combinaison de LEFT, de NATURAL et de ','
Un LEFT JOIN sur plus de 2 tables est-il possible ? Sinon pourquoi ? (Peut-être que ça n'a pas de sens, j'ai encore du mal à me représenter tout ça) Comment obtenir autrement l'équivalent d'un NATURAL JOIN avec en plus les lignes ou un champ est NULL ?
Merci pour toute aide.
-- Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************