MYSQL, Jointures et Clés
gaerebut
Messages postés
1017
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
J'essais de raccourcir mes requêtes via des clés primaires/étrangères.
J'ai correctement configuré mes tables (innoDB + clés primaires + clés étrangères) qui sont comme ceci:
Donc ici mes deux premières tables sont reliées entre elles par une table de jointures qui permet ainsi à une recette d'avoir un nombre indéfinis d'ingrédients.
Quand je viens à modifier ou supprimer une recette ou un ingrédients, l'enregistrement dans la table de jointure se modifie/supprime bien en même temps (en cascade).
Seulement j'aurai aussi voulu savoir s'il était possible de faire un SELECT sans avoir besoin de préciser les relations entre ces 3 tables ?
Un truc du genre (Obtenir le nom de chaque ingrédient de la première recette):
Au lieux de celle-ci:
Ou encore de passer par un LEFT JOIN tout aussi long que la dernière.
Merci de votre aide ! :-)
PS: Je suis aussi ouvert à toute remarque concernant ma technique pour joindre mes recettes à mes ingrédients de manière illimité
A+
Gaerebut
J'essais de raccourcir mes requêtes via des clés primaires/étrangères.
J'ai correctement configuré mes tables (innoDB + clés primaires + clés étrangères) qui sont comme ceci:
recettes: ID (Primary Key) nom etc... ingredients: ID (Primary Key) nom etc... recettes_ingredients: (table de jointure) ID recette_id (Foreign Key + pointant vers l'ID de la recette en cascade delete/update) ingredient_id (Foreign Key + pointant vers l'ID de l'ingredient en cascade delete/update)
Donc ici mes deux premières tables sont reliées entre elles par une table de jointures qui permet ainsi à une recette d'avoir un nombre indéfinis d'ingrédients.
Quand je viens à modifier ou supprimer une recette ou un ingrédients, l'enregistrement dans la table de jointure se modifie/supprime bien en même temps (en cascade).
Seulement j'aurai aussi voulu savoir s'il était possible de faire un SELECT sans avoir besoin de préciser les relations entre ces 3 tables ?
Un truc du genre (Obtenir le nom de chaque ingrédient de la première recette):
SELECT i.nom FROM ingredients i, recettes r WHERE r.id = 1
Au lieux de celle-ci:
SELECT i.nom FROM ingredients i, recette r, recettes_ingredients ri WHERE i.id = ri.ingredient_id AND r.id = ri.recette_id AND r.id = 1
Ou encore de passer par un LEFT JOIN tout aussi long que la dernière.
Merci de votre aide ! :-)
PS: Je suis aussi ouvert à toute remarque concernant ma technique pour joindre mes recettes à mes ingrédients de manière illimité
A+
Gaerebut
A voir également:
- MYSQL, Jointures et Clés
- Cles windows 8 - Guide
- Mysql community server - Télécharger - Bases de données
- Clés word - Télécharger - Sécurité
- Trousseau de clés iphone - Guide
- Cles usb non reconnu - Guide
2 réponses
Bonjour,
Non vous êtes obligé de passer par des jointures donc ceci :
SELECT i.nom FROM ingredients i, recette r, recettes_ingredients ri WHERE i.id = ri.ingredient_id AND r.id = ri.recette_id AND r.id = 1
ou effectiement avec les left join
Non vous êtes obligé de passer par des jointures donc ceci :
SELECT i.nom FROM ingredients i, recette r, recettes_ingredients ri WHERE i.id = ri.ingredient_id AND r.id = ri.recette_id AND r.id = 1
ou effectiement avec les left join