@ishlambad

Не простой SELECT * FROM, как правильно?

Помогите с запросом, я уже всю голову поломал, если это сложно - статью куда смотреть, где читать, абсолютно не понимаю как сделать такой запрос:

Есть модельки:

User {
	ID uint
	Name string
}

Fruit {
	ID uint
	Name string
	Similar []*Fruit // many2many
}

RateFruit {
	UserID uint
	User User // has one
	FruitID uint
	Fruit Fruit // has one
	IsLiked bool
}


мне нужно получить все похожие фрукты пользователя которых нет в списке оцененных фруктов

Проще говоря:

пользователь оценил - яблоко[похожие: апельсин, банан], банан[манго, дыня]

нужен результат:

апельсин, манго, дыня (банана нет, он уже был оценен)
  • Вопрос задан
  • 204 просмотра
Пригласить эксперта
Ответы на вопрос 1
402d
@402d
начинал с бейсика на УКНЦ в 1988
для отношений много-много нужна еще одна таблица.
Ребро графа связности A,B (ключ1,ключ2)
тут или в базу класть как два вектора AB и BA
запросы на выборку проще
или один раз . база меньше, но тогда джонить запросы ключ1 и ключ2

Соединить таблицу оценок (А) с таблицей аналогов по ключ1=А.ид_фрукта
left outer join с таблицой оценок(Б) по ключ2 = Б.ид_фрукта
где А.пользователь оценил и Б.пользователь нулл

из запроса выше будут известны ид фрктов. Теперь соединить с самой таблицей фрктов, чтобы раскрыть названия.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы