iBeb Posté 5 Avril 2007 Partager Posté 5 Avril 2007 Bonjour, J'ai une requete que je n'arrive pas à faire... Une table photos : id_ph, photo Une table galeries : id_g, nom Une table de liaison : p_a_galerie_photo : une photo peut appartenir à une ou plusiuers galeries, une galerie contient plusieurs photos... Le but de ma requête c'est d'aller chercher dans une table de photos (p_photos), des photos uniques appartenant à des galeries (table p_galeries) différentes. En gros : je veux tirer aléatoirement 6 identifiants de galerie, et pour cacun de ces identifiants récupérer une photo appartenant à cette galerie... En faisant le group by id_g : c'est tjs les mêmes photos qui sortent.. SELECT r.id_r, g.id_g, p.id_ph, g.donnees AS donneesG ,p.donnees AS donneesP FROM p_galeries g INNER JOIN p_a_galerie_photo a ON g.id_g=a.id_g INNER JOIN p_photos p ON p.id_ph=a.id_ph WHERE g.onscreen='o' AND p.onscreen='o' GROUP BY a.id_g ORDER BY RAND() LIMIT 6 Je précise... je suis débutant en BD Lien vers le commentaire Partager sur d’autres sites More sharing options...
lionel.a Posté 7 Avril 2007 Partager Posté 7 Avril 2007 Bonjour, Tu as donné tout seul la réponse sans t'en rendre compte : Le but de ma requête c'est d'aller chercher dans une table de photos (p_photos), des photos uniques Donc : SELECT ... FROM p_photos p !!! Ta requête (j'utilise left join par habitude, mais le problème ne porte pas dessus) : SELECT r.id_r, g.id_g, p.id_ph, g.donnees AS donneesG ,p.donnees AS donneesPFROM p_photos pINNER JOIN p_a_galerie_photo a ON p.id_ph=a.id_phINNER JOIN p_galeries g ON g.id_g=a.id_g WHERE g.onscreen='o' AND p.onscreen='o'GROUP BY a.id_gORDER BY RAND()LIMIT 6 Lien vers le commentaire Partager sur d’autres sites More sharing options...
iBeb Posté 10 Avril 2007 Auteur Partager Posté 10 Avril 2007 Oui en effet c'est logique. Cependant, ça ne change malehreusement pas le résultat : en faisant un group by id_ph il arrive d'avoir des id_g identiques, et en faisant un group by id_g, une fois sur deux j'ai deux id_ph identiques... Peut-être n'est-il pas possible d'obetnir 6 photos aléatoires distinctes appartenant à 6 galeries aléatoires et distinctes en une seule requête... Lien vers le commentaire Partager sur d’autres sites More sharing options...
lionel.a Posté 12 Avril 2007 Partager Posté 12 Avril 2007 Pardon, c'est vrai, j'ai oublié de changer le GROUP BY : comme tu recherches des photos de ta table p, tu dois faire un GROUP BY sur p aussi (je crois même que c'est facultatif et que tu peux le supprimer. Tu peux aussi remplacer tes jointures par LEFT JOIN. Ca devrait marcher, non ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant