PHP, Mysql - Показать фиксированное количество результатов из базы данных на основе нескольких идентификаторов - PullRequest
0 голосов
/ 13 декабря 2018

Вот примеры таблиц:

Table - user
uid | name
1       X
2       Y
3       Z
4       W

Table - dessert
id | name | price
1       A    5.00
2       B    10.00
3       C    11.00
4       D    23.00
5       E    3.00
6       F    7.00

Table - fav_dessert
uid | dessert_id
1       2
1       3
2       3
2       4
3       5
4       6


Table - related_dessert
dessert_id          | rel_id
(Fkey->dessert->id) | (Fkey->dessert->id)
  1                    5
  2                    3
  2                    4
  2                    5
  5                    6

Как узнать пользователя, который имеет похожий вкус на десерт.Предположим, пользователь X ищет пользователей, которые похожи на его вкус.В результатах поиска я хочу показать пользователям, которые имеют такие же любимые десерты, как X, а затем показать пользователям, которым нравятся связанные десерты любимого десерта пользователя X.Выход должен быть:

Y
Z

Как я могу получить то, что я хочу?Кстати, мне нужно первое N количество строк.Спасибо.

1 Ответ

0 голосов
/ 13 декабря 2018

вы можете попробовать использовать внутреннее объединение в запросе к десерту с идентификатором пользователя distinc> 1

select f.uid, u.name
from fav_dessert f 
inner join user u on f.uid=u.uid
inner join (
select dessert_id
from fav_dessert 
group by dessert_id 
having count(distinct uid)>1
) t on t.dessert_id = f.dessert_id 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...