2017-03-10 3 views
-2

Je veux montrer top 5 utilisateurs sur le tableau de bord utilisateur connecté en fonction des critères suivants:Afficher les 5 utilisateurs sur le tableau de bord de l'utilisateur connecté en fonction des préférences

utilisateurs optent attributs suivants dans leur profil:

Relationship preferences, 
Hobbies, 
Interests, 
Language etc 

plus les préférences correspondront, la plus haute priorité au profil de l'utilisateur sera attribué

table_users

userid ufname ulname gender 
-------------------------------- 
1  test1 Test2 M 
2  testF TestF F 
3  testF1 TestF1 F 
4  testF2 TestF2 F 
5  testF5 TestF2 F 

table_preferences

preference_id user_preferences 
-------------------------------- 
1    Cooking 
2    Gardening 
3    Smoking 
4    Single 
5    widow 
6    traveling 

table_user_preferences

userid user_preference_id 
-------------------------------- 
1  1 
1  2 
1  3 
1  4 

2  3 
2  4 

3  2 
3  3 
3  6 

4  1 

5  1 
5  2 
5  3 
5  4 
5  6 

Maintenant, l'utilisateur suppose un est connecté, sur son tableau de bord d'autres utilisateurs enregistrés (avec en face-à-dire des femmes de genre) auront affichage dont les attributs les plus élevés sont correspondent. Comme on peut le voir, l'utilisateur cinq 5 matchs la plupart des attributs il sera affiché sur le dessus de la liste et de repos seront obtenir l'affichage en conséquence comme suit:

Résultat requis:

User_id ufname 
5  testF5 
3  testF1 
2  testF 
4  testF2 

Ma Recherche est I Je pense à utiliser la recherche de la pertinence. Sera-t-il approprié. N'importe qui peut m'aider à faire des suggestions.

+3

Bonjour. Et quel est votre problème? Stackoverflow est là pour vous aider avec des problèmes de programmation spécifiques, pas pour coder pour vous. http://stackoverflow.com/help/how-to-ask – Twinfriends

+0

Pouvez-vous nous fournir votre code? Nous ne pouvons pas vous aider sans que vous nous fournissiez votre code. Nous ne pouvons pas savoir comment vous avez codé, donc nous ne pouvons pas savoir quelles erreurs vous avez commises. – Twinfriends

+0

Je ne demande pas de solution pour ça. Si vous avez lu attentivement mon message, j'ai demandé des suggestions et non des solutions. –

Répondre

0

utilisation simple et MYSQL JOINSUBQUERY

1) Utilisez subquery pour obtenir la préférence de l'utilisateur connecté.

2) Puis rejoindre table_user_preferences avec table_users avec ON tu.userid = tup.userid et AND tu.gender !=$current_user_gender et IN() état pour correspondre à la préfrence avec connecté préférences de l'utilisateur.

3) Enfin groupe l'utilisateur et d'appliquer l'ordre de préférence par comptage match

select tu.*,tup.userid,count(1) as total_match 
    from table_user_preferences as tup 
    join table_users as tu 
    ON tu.userid =tup.userid 
    where tup.user_preference_id 
    IN (select up.user_preference_id from table_user_preferences as up where up.userid=$current_userid) 
    AND tu.gender !=$current_user_gender 
    group by tup.userid order by total_match desc limit 5