Requête SQL à partir d'un requête SQL ???

Résolu/Fermé
kisscool387 Messages postés 260 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 20 août 2016 - 2 mars 2010 à 21:41
kisscool387 Messages postés 260 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 20 août 2016 - 5 mars 2010 à 20:45
Bonjour,
j'aimerai afficher les derniéres activitées des amis d'un membres sur mon site. (comme sur youtube)

pour l'ajout d'amis, j'ai fait une autre table, qui répértori le pseudo du membre qui ajout un ami, le pseudo de l'ami en question et la date.

jusque là tout va bien, seulement maintenant avec ça, j'aimerai afficher par exemple les 10 dérniéres photos posté en date par mes X amis !

je peux lancer une requête dans ma table des photos avec "WHERE autor=$ami ORDER BY date LIMIT 0,1"
seulement là j'aurai les 10 dérniéres photos que de 1 seul ami, alors je pourrai faire "WHERE autor=$ami OR autor=$ami2 OR autor=$ami3 ... ORDER BY date LIMIT 0,1"
mais si j'ai des membres qui ont 100 amis ? ?
je vais tout de même pas ajouter 100fois cette réplique !

je me disais donc que il devais y avoir une autre solution que j'ignior, et que peut être quelqu'un aura la gentillesse de m'aider.

4 réponses

graffx Messages postés 6506 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 24 mars 2019 1 973
2 mars 2010 à 23:01
ben supprime WHERE autor=$ami et tu auras les photos de tous tes amis
0
kisscool387 Messages postés 260 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 20 août 2016 11
3 mars 2010 à 10:29
Merci graffx, mais je me suis mal expliqué.
J'ai une table pour mes photos, et une autre pour mes amis, alors si j'enléve "WHERE autor=$ami" j'aurai les photos de tout le site y compris ceux qui ne sont pas mes amis, moi je voudrais réstrindre la requête uniquement à mes amis.

J'ai pensé ajouter dans la table de membre un champ "requete" par exemple, et j'y ajouterai "WHERE autor=$ami" pour le 1er ajout d'ami, puis ensuite pour l'ajout de nouveau ami, je reprenderai ce champ et j'y ajouterai "OR autor=$ami2", ce qui me donnerai par exemple pour 5 amis :

"WHERE autor=$ami OR autor=$ami2 OR autor=$ami3 OR autor=$ami4 OR autor=$ami5"

et j'aurai ensuite juste à mettre m'a variante "$requete" dans m'a requête pour que ça fonctionne.

Seulement j'ai une question, si jamais il y à 100 ami, ca va donc poser 100 fois la condition "autor=$ami" sur m'as requête, et je me demande si ça ne risque pas de ralentir beaucoup l'ouvérture de la page ? ou carément faire beuguer la base sql ? ou cela est il sans risque ?
0
avion-f16 Messages postés 19244 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 17 avril 2024 4 496
5 mars 2010 à 20:10
Regarde du côté des jointures SQL.
http://www.siteduzero.com/tutoriel-3-214617-introduction-aux-jointures-sql.html

Essaye avec ça mais je ne sais pas si ça ira (pas testé) :
SELECT * FROM `amis`,`photos` WHERE `photos`.`id_auteur` = `amis`.`id_ami` LIMIT 0, 10
0
kisscool387 Messages postés 260 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 20 août 2016 11
5 mars 2010 à 20:45
Merci, en faite j'avais déjà trouvé ma solution, et c'est effectivement une jointure sql, mais c'est pas exactement comme tu l'as fait, en faite, je colle mes 2 requêtes cote à cote, et j'attribu une lettre par table, donc dans mon cas j'ai 2 table :

table_amis = A
table_photos = P

SELECT = A.pseudo, A.age, A.prenom, P.url, P.taille, P.auteur, P.date
et
WHERE A.pseudo = P.auteur

je t'ai pas mis le cade complet, parceque j'ai la fléme d'allé le cherché dans mes fichiers, mais le principe y est ;)

Merci
0