powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как средствами одного только SQL решить задачу пересечения множеств?
4 сообщений из 4, страница 1 из 1
Как средствами одного только SQL решить задачу пересечения множеств?
    #39856356
Роми Коэн
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста, можно ли средствами одного только SQL (MySQL или любой другой опенсорсовый) решить задачу пересечения множеств подобного рода:

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

- Есть конопка, при нажатии на которую, пользователь получает список других пользователей, отранжированный по числу точных совпадений в этом списке (например, у него список [вишня, банан, яблоко, курица, весло], а у кого-то [танк, газета, яблоко, весло, шило] - 2 совпадения - яблоко и шило).

1. В каком формате лучше хранить это в базе? Как именно?

2. Как потом одним запросом получить этот ранжированный список?

3. В общем, как это сделать лучше и правильнее всего?

Знающие люди предложили решить средствами NoSQL (Redis) но может как-то можно сделать обычными средствами?

Спасибо.
...
Рейтинг: 0 / 0
Как средствами одного только SQL решить задачу пересечения множеств?
    #39856362
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роми Коэн1. В каком формате лучше хранить это в базе? Как именно?

2. Как потом одним запросом получить этот ранжированный список?

3. В общем, как это сделать лучше и правильнее всего?

EAV. Потом простенький запрос с JOIN + GROUP BY + ORDER BY COUNT(*) DESC.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как средствами одного только SQL решить задачу пересечения множеств?
    #39856476
Роми Коэн
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
я правильно понял, что таблица tags будет выглядеть примерно так:


user_id tag
1 apple
1 dog
1 tree
2 dog
2 tree
2 sun
3 tree
3 sea
3 moon

да?

а как будет выглядеть запрос к такой таблице для юзера с id 1?

например таблица users (просто для общей картины)

id name
1 John
2 Mike
3 Vasia
...
Рейтинг: 0 / 0
Как средствами одного только SQL решить задачу пересечения множеств?
    #39856591
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роми Коэна как будет выглядеть запрос к такой таблице для юзера с id 1?

Именно так как я сказал:
Код: sql
1.
2.
3.
4.
select a.user_id as user1, b.user_id as user2, count(*)
from tags a join tags b on a.tag=b.tag
group by 1,2
order by 3 desc


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как средствами одного только SQL решить задачу пересечения множеств?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]