Requete SQL bi critère mais spéciale...

Julien -  
 Julien -
Bonjour,

Mon problème concerne une requête sur 2 champs en même temps. dans mon cas, il s'agit d'une liste d'amis contenant entre autre les champs "amis1" et "amis2" qui remplisse lorsque qu'une demande d'ajout dans la liste de l'autre membre est accepté.

Mais l'ami de l'un est l'ami de l'autre et suivant la personne qui envoi la demande, le membre sera enregistré dans l'un ou dans l'autre champs.

Pour l'affichage de l'intégralité des amis d'un membre je cherche une requête qui cumule la recherche sur "amis1" et "amis2" si ceux-ci correspondent a l'identifiant du membre dont on veut afficher la liste d'amis, et recuperer le champs opposé pour avoir l'identifiant du membre ami.

Pour le moment j'ai 2 requêtes (une sur chaque champs) mais ça pose plusieurs soucis de mise en page, de pagination, etc...).

Et avant de me griller plusieurs neurones, je préfère vous demander si ce que je souhaite faire est réalisable.

L'autre solution est de créer 2 enregistrements dans la base a chaque ajout et ainsi lancer une recherche SQL uniquement sur "amis1" ou "amis2", mais ça multiplie par 2 le nombre d'enregistrement et ça va bourrer ma base trop rapidement.

Merci de ma donner un exemple de requête si vous connaissez la formule, il me manque juste ça, car le reste fonctionne très bien (pagination, traitement des données, etc...)
A voir également:

2 réponses

farfouch00 Messages postés 128 Statut Membre 3
 
Salut

Peux tu expliquer plus ton problème? Parce que là c'est très flou...Tu travaille sur Oracle ou juste MySql?
0
Julien
 
Bonjours, et merci pour ta réponse.

C'est pour un site web, c'est avec mysql.
Je sais que l'explication n'est pas évidente, je vais essayer d'éclaircir un peu.

Lorsque membre1 fait une demande pour ajouter membre2 dans sa liste d'ami et que membre2 accepte la demande, dans ce cas, l'id de membre2 s'inscris dans le champs "amis1" et l'id du membre1 dans le champs "amis2".
Si la demande est inversé, membre2 sera inscrit dans "amis1" et mambre1 sera dans "amis2".

donc si je lance un requete par rapport a l'id de membre1 dans "amis1", pour le cas N°1, je n'aurais pas de résultat puisque membre1 est enregistré dans le champs "amis2".

Pourtant ils sont amis, donc j'aimerais avoir une requête qui puisse rechercher dans ma base qui va récupérer la valeur de "amis1" si "amis2"=id de membres1 et récupérer "amis2" si "amis1"=id membre1.

Dans le but d'avoir un affichage propre de tous les amis enregistré dans la base, que ce soit dans "amis1" ou "amis2"
0
farfouch00 Messages postés 128 Statut Membre 3
 
Bonjour,

C'est toujours pas tellement claire, mais bon, on arrive à comprendre le but.

Je suis toujours pas sur de la solution, pourrais je avoir une description des tables?
0
Julien
 
en fait, il n'y a qu'une table qui contient 4 champs.

id (auto incrémenté) | amis1 | amis2 | date

"date" sert à classer l'affichage par date, mais c'est pas le plus important dans mon soucis.
Donc la table est simple. Il me faut juste pouvoir récupérer la valeur du champs correspondant, parmi "amis1" et "amis2", si dans le champs correspondant à la même ligne de la table, la valeur correspond a celle de l'identifiant du membre dont je veux récupérer tous les amis.

Mon soucis se focalise uniquement sur la requête SQL à adopter dans ce cas.
0