MYSQL, Jointures et Clés

gaerebut Messages postés 1017 Date d'inscription   Statut Membre Dernière intervention   -  
 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:

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:

2 réponses

Utilisateur anonyme
 
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
1
gaerebut Messages postés 1017 Date d'inscription   Statut Membre Dernière intervention   171
 
Maintenant je suis sûr, c'est dommage que MySQL n'offre pas cette possibilité... :-p

Merci bien :-)

A+
Gaerebut
Il y a 2 règles d'or pour réussir dans la vie :
-Règle 1: ne jamais dire tout ce que l'on sait...
-Règle 2: ...
0
Utilisateur anonyme
 
ce n'est pas propre à MySQL, c'est propre au SQL tout court
0