Bonjour,
Difficile de décrire dans le titre ma question.
Voici le MCD utilisé pour créer ma bdd
http://img137.imageshack.us/i/mcdp.png
Voici les tables :
La table liste contient 3 lignes avec le nom des listes : "fruit", "légumes", "couleurs"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 personne (id_u, u_nom, p_prenom, p_tel1, p_tel2, p_email, p_datenais, p_lieunais, #couleur, #fruit, #legume) liste (id_li, li_nom) item (id_it, it_nom, #id_li)
La table item contient tous les items des listes, par ex "banane", "violet", "courgette".
Les 3 colonnes couleur, fruit et legume de ma table personne sont des clés étrangères liées à la table item. Chaque personne a donc un unique fruit, un unique légume et une unique couleur
Pour récupérer dans une requête des informations sur les clients, et récupérer les intitulés, j'ai 2 possibilités:
Requête 1
Requête 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 SELECT u_nom, p_prenom, c.it_nom AS couleur, f.it_nom AS fruit, l.it_nom AS legume FROM personne p , (item NATURAL JOIN liste) As c, (item f NATURAL JOIN liste) AS f, (item l NATURAL JOIN liste) AS l WHERE p.couleur = c.id_it AND p.fruit = f.id_it AND p.legume = l.id_it
Je ne sais pas du tout laquelle est la mieux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT u_nom, p_prenom, (SELECT it_nom FROM item NATURAL JOIN liste WHERE id_it = p.couleur) AS couleur, (SELECT it_nom FROM item NATURAL JOIN liste WHERE id_it = p.fruit) AS fruit, (SELECT it_nom FROM item NATURAL JOIN liste WHERE id_it = p.legume) AS legume FROM personne p
* La première utilise 3 appels à la même table "item" (+jointure vers "liste") avec des alias différents et a besoin de 3 clauses WHERE
Il est simple d'ajouter des clauses WHERE comme
* La 2ème utilise des SELECT imbriqués. Je ne sais pas comment ajouter une clause WHERE , par exemple sur la couleur..
Code : Sélectionner tout - Visualiser dans une fenêtre à part AND c.it_nom LIKE 'bl%'
Qu'est ce qui sera le mieux à l'usage, sachant que je veux utiliser les 2 tables item et list pour des colonnes d'autres tables que "personne" ?
Merci d'avance
Partager