Здравствуйте, у меня есть 3 таблицы, но мне нужна только помощь с 2 таблицами.
Первая таблица champions
, В этой таблице более 100 имен.
Вторая таблица champion_names
есть псевдонимы для первой таблицы.
Третья таблица champion_names_vote
, Есть голоса за прозвищами. Большой палец вверх, если мне нравится любое прозвище или большой палец вниз.
На моем сайте у меня есть сайт, где я могу увидеть список, полный имен (Table 1)
, Есть 2 столбца. Во первых это нормальное имя (Table 1)
во втором нике (Table 2)
, Теперь я хочу показать лучший псевдоним в столбце 2. На самом деле это случайный, но я хочу показать только лучший псевдоним.
Я могу показать все имена, это не проблема. Но если я хочу показать только лучшие прозвища, я не знаю как.
Table 2: id(AI), champ_id(this is the id for Table 1), sender_id, name
Table 3: id(AI), userid, name_id(Table 2 ID), like_dislike
like_dislike = 1 это как, -1 не нравится, а 0 это ничего.
Пример:
Table 2: 50, 2, 4, Test
Table 3: 1, 3, 50, 1,
Мне понравилось имя Table 2
, Итак name_id
в Table 3
это id
из Table 2
Так как я могу сделать это с JOIN?
Не могли бы вы мне помочь.
что-то вроде этого должно сделать свое дело.
Идея состоит в том, чтобы сначала проанализировать ваши голоса по нику. Затем выберите Максимальный рейтинг голосов по HAVING
:
SELECT voteResult.name, vote as winnerVoteScore
FROM(
select a.name_id, b.name,
sum(IF(a.like_dislike = 1, 1, IF(a.like_dislike = 2, -1, 0 ))) as vote
FROM champion_names_vote as a JOIN champion_names as b
ON a.name_id = b.ID
GROUP BY 1
) as voteResult
GROUP BY 1
HAVING vote = max(vote)
Других решений пока нет …