le 31/03/2011 à 15:44
Sammuel
Salut,
Cela fait un moment que je n'arrive pas à résoudre cette requête... Je ne sais pas d'ailleurs, si c'est la meilleure méthode à utiliser.
Pour résumé, sur une même page, j'aimerais lister plusieurs noms de recettes, avec en dessous de chaque nom, une liste de 5 photos (maximum). Sachant qu'une recette peut avoir un nombre X de photos.
Une recette peut avoir 20 photos, comme 5, 7, 10, 100, 1000 !
Je parle de recettes de cuisine pour simplifer mon exemple :)
La requête de base est :
=> mais elle m'affiche TOUTES les recettes avec TOUTES les photos de chaque recette. Ce qui est normal, vu qu'il n'y a pas de limite. Et je crois que l'on ne peut pas faire de "limit" dans un JOIN ?
J'ai tenté quelque chose du genre :
=> mais cela m'affiche TOUTES les recettes avec TOUTES les photos de chaque recette.
=> J'ai essayé en ajoutant un "limit" dans le SELECT du LEFT JOIN, mais cela ne fait rien :p
Auriez vous une solution pour limiter le nombre de résultat d'une "sous requête" ?
=> Une fois la requête effectuée, je pourrais très bien limiter le nombre d'images à afficher à 5, mais je ne pense pas que ce soit la meilleure solution... surtout si les recettes ont plus d'une centaine de photo chacune :p
Merki.
Cela fait un moment que je n'arrive pas à résoudre cette requête... Je ne sais pas d'ailleurs, si c'est la meilleure méthode à utiliser.
Pour résumé, sur une même page, j'aimerais lister plusieurs noms de recettes, avec en dessous de chaque nom, une liste de 5 photos (maximum). Sachant qu'une recette peut avoir un nombre X de photos.
Une recette peut avoir 20 photos, comme 5, 7, 10, 100, 1000 !
Je parle de recettes de cuisine pour simplifer mon exemple :)
Base de données :
RECETTE
recette_id
nom
description
PHOTO
id
recette_id
RECETTE
recette_id
nom
description
PHOTO
id
recette_id
Résultats retournés
**********
Recette 1
photo 1
photo 2
photo 3
photo 4
**********
Recette 2
photo 5
photo 6
photo 7
photo 8
photo 9
photo 10
photo 11
photo 12
**********
Recette 3
photo 1
**********
Recette 4
photo 1
photo 2
photo 3
photo 4
photo 5
photo 6
**********
**********
Recette 1
photo 1
photo 2
photo 3
photo 4
**********
Recette 2
photo 5
photo 6
photo 7
photo 8
photo 9
photo 10
photo 11
photo 12
**********
Recette 3
photo 1
**********
Recette 4
photo 1
photo 2
photo 3
photo 4
photo 5
photo 6
**********
Résultats que j'aimerais obtenir
**********
Recette 1
photo 1
photo 2
photo 3
photo 4
**********
Recette 2
photo 5
photo 6
photo 7
photo 8
photo 9
**********
Recette 3
photo 1
**********
Recette 4
photo 1
photo 2
photo 3
photo 4
photo 5
**********
**********
Recette 1
photo 1
photo 2
photo 3
photo 4
**********
Recette 2
photo 5
photo 6
photo 7
photo 8
photo 9
**********
Recette 3
photo 1
**********
Recette 4
photo 1
photo 2
photo 3
photo 4
photo 5
**********
La requête de base est :
SELECT recette.recette_id,recette.nom,recette.description,photo.id FROM recette
LEFT JOIN photo ON photo.recette_id = recette.recette_id
=> mais elle m'affiche TOUTES les recettes avec TOUTES les photos de chaque recette. Ce qui est normal, vu qu'il n'y a pas de limite. Et je crois que l'on ne peut pas faire de "limit" dans un JOIN ?
J'ai tenté quelque chose du genre :
SELECT recette.recette_id,recette.nom,recette.description,p.id
FROM recette
LEFT JOIN (SELECT id,recette_id FROM photo WHERE xxxxxxxxxx) p ON recette.recette_id = p.recette_id
WHERE xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
=> mais cela m'affiche TOUTES les recettes avec TOUTES les photos de chaque recette.
=> J'ai essayé en ajoutant un "limit" dans le SELECT du LEFT JOIN, mais cela ne fait rien :p
Auriez vous une solution pour limiter le nombre de résultat d'une "sous requête" ?
=> Une fois la requête effectuée, je pourrais très bien limiter le nombre d'images à afficher à 5, mais je ne pense pas que ce soit la meilleure solution... surtout si les recettes ont plus d'une centaine de photo chacune :p
Merki.