2015-01-05 2 views
0

Я надеюсь, что один из вас более опытных программистов могли бы пролить свет на эту ситуацию:Динамическое согласование данных между пользователями на основе выбора пользователя

Мой сайт позволяет пользователям создавать профиль и ввести в их любимые музыканты, все из которых находятся в уже существующей базе данных музыкантов.

Основываясь на выбранных художниками, я хочу показать им других пользователей, которые выбрали тех же художников.

Может ли кто-нибудь предложить предложения о том, как это можно эффективно выполнить?

Я использую SQL и PHP для задней части.

ответ

1

Вам нужно будет создать таблицу перекрестных ссылок между пользователями и музыкантами, которая определяет отношения «любит». Как минимум, просто нужно будет содержать идентификатор пользователя и идентификатор музыканта.

CREATE TABLE user_likes_musician (
    user_id INT NOT NULL, 
    musician_id INT NOT NULL, 
    PRIMARY KEY(user_id, musician_id) 
); 

Чтобы найти пользователей, которым нравится конкретный музыкант, вы можете просто присоединиться к таблице любит с таблицей пользователей:

SELECT * FROM users 
    JOIN user_likes_musician 
     ON (users.ID = user_likes_musician.user_id 
      AND user_likes_musician.user_id <> [current user id] 
      AND user_likes_musician.musician_id = [musicians id]); 
Смежные вопросы