par
Invité » 17 nov. 2005, 20:59
Bonjour à tous !
Voilà, je suis en train de découvrir les requêtes avec jointures et j'ai suivi quelques tutoriaux là-dessus, mais je bloque sur un truc.
En gros, j'ai 3 tables :
Table livres
idLivre (PK, auto)
titre_livre
idAuteur
idCollection
Table auteurs
idAuteur (PK, auto)
nom_auteur
prenom_auteur
Table collections
idCollection (PK, auto)
nom_collection
Je voudrais faire une requête regroupant les 3 tables afin d'afficher dans un tableau le titre du livre, le nom de l'auteur et le nom de la collection et je me suis dit que INNER JOIN était le meilleur parti.
Je me suis donc lancé dans cette requête :
Code : Tout sélectionner
SELECT * FROM livres JOIN auteurs USING (id_auteur) JOIN collections USING (id_collection)
Mais là j'ai droit à un message d'erreur :
Du coup, j'ai essayé avec ON et non USING :
Code : Tout sélectionner
SELECT * FROM livres INNER JOIN auteurs ON livres.id_auteur=auteurs.id_auteur INNER JOIN collections ON livres.id_collection=collections.id_collection
Celle-là marche parfaitement, mais je la trouve moins lisible. La syntaxe USING est plus claire je trouve.
Quelqu'un pourrait m'indiquer la différence entre les 2 syntaxes, ON et USING svp?
Merci

Bonjour à tous !
Voilà, je suis en train de découvrir les requêtes avec jointures et j'ai suivi quelques tutoriaux là-dessus, mais je bloque sur un truc.
En gros, j'ai 3 tables :
Table livres
idLivre (PK, auto)
titre_livre
idAuteur
idCollection
Table auteurs
idAuteur (PK, auto)
nom_auteur
prenom_auteur
Table collections
idCollection (PK, auto)
nom_collection
Je voudrais faire une requête regroupant les 3 tables afin d'afficher dans un tableau le titre du livre, le nom de l'auteur et le nom de la collection et je me suis dit que INNER JOIN était le meilleur parti.
Je me suis donc lancé dans cette requête :
[code]SELECT * FROM livres JOIN auteurs USING (id_auteur) JOIN collections USING (id_collection)[/code]
Mais là j'ai droit à un message d'erreur :
[code]Unknown column 'test.auteurs.id_collection' in 'on clause'[/code]
Du coup, j'ai essayé avec ON et non USING :
[code]SELECT * FROM livres INNER JOIN auteurs ON livres.id_auteur=auteurs.id_auteur INNER JOIN collections ON livres.id_collection=collections.id_collection[/code]
Celle-là marche parfaitement, mais je la trouve moins lisible. La syntaxe USING est plus claire je trouve.
Quelqu'un pourrait m'indiquer la différence entre les 2 syntaxes, ON et USING svp?
Merci :)