Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как получить записи по идентификаторам и отсортировать ? / 2 сообщений из 2, страница 1 из 1
28.10.2014, 21:03:34
    #38789850
nepster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записи по идентификаторам и отсортировать ?
Есть несколько таблиц:

Article (id, title)
Article_Tag (article_id, tag_id)
Tag (tag_id, name)

К примеру в таблице Article есть записи, которые содержат теги. Связи прописаны в Article_Tag. Например запись "Новость 1" содержит теги: Новости, Природа, Горячее.

В таблице Article_Tag будет следующее:
1 (id новости) 1 (id тега)
1 (id новости) 2 (id тега)
1 (id новости) 3 (id тега)

и тп.


Подскажите пожалуйста как можно написать запрос, который бы достал все записи из Article, которые содержат максимальное кол-во одинаковых тегов?

Тоесть если у нас есть "Новость 1" с тегами "Новости, Природа, Горячее" то похожие на нее будут записи, которые включают все эти теги. Сортировка по кол-во тегов:

Похожие записи на "Новость 1":
"Новость 2" - "Новости, Природа, Горячее"
"Новость 3" - "Новости, Природа"
"Новость 4" - "Новости, Природа"
"Новость 5" - "Новости"
"Новость 6" - "Горячее"
...
Рейтинг: 0 / 0
28.10.2014, 21:44:33
    #38789877
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить записи по идентификаторам и отсортировать ?
Несложным запросом, связав две копии таблицы Article_Tag, подсчитайте количество совпадающих тегов для каждой пары статей. Посчитайте максимальное количество совпадающих тегов. Из второй копии того же двутабличного запроса выберите только те пары, для которых количество совпадений равно максимальному.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как получить записи по идентификаторам и отсортировать ? / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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