Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Нестандартное условие / 7 сообщений из 7, страница 1 из 1
13.04.2016, 12:02
    #39214511
mast88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартное условие
Есть таблица news, интересует только поля title (заголовок новости) и date (дата).
Есть таблица peoples, там поле name (имя человека)

Что нужно: вывести на странице имена людей, про которых было написано больше всего за неделю. Поиск имен можно организовать по заголовкам новостей по полю title.

Как это реализовать, подскажите пожалуйста.
...
Рейтинг: 0 / 0
13.04.2016, 12:26
    #39214554
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартное условие
Если "в лоб", то так:
Код: sql
1.
2.
3.
4.
5.
6.
SELECT people.name
FROM news, people
WHERE news.title LIKE CONCAT('%', people.name, '%')
GROUP BY people.name
ORDER BY COUNT(*) DESC
LIMIT 3


Но упоминания людей будут искаться буквально по вхождению подстроки, т.е. строго в той же словоформе и включая вхождения в другие имена (например, "Иван" входит в "Иванов", а они оба входят в "Иванович").
Если нужна морфология и более интеллектуальное определение вхождения, то это уже задача не для MySQL.
...
Рейтинг: 0 / 0
13.04.2016, 13:38
    #39214645
mast88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартное условие
miksoft, спасибо большое за код работает для данного проекта.

Но можно попросить вас подкорректировать для другого сайта. Там тоже самое, только все записи (и новости и люди) находятся в одной таблице news. Но все люди записаны там со строкой category 1, а новости category 2. Не могу понять как их разделить.
...
Рейтинг: 0 / 0
13.04.2016, 13:39
    #39214646
mast88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартное условие
Сейчас получается так:


SELECT title
FROM news
WHERE title LIKE CONCAT('%', title, '%')
GROUP BY title
ORDER BY COUNT(*) DESC
LIMIT 3


Но естественно не работает.
...
Рейтинг: 0 / 0
13.04.2016, 15:22
    #39214756
Krevedko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартное условие
Может как-то так

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT news.title,COUNT(*)
FROM news, (select news.title from news where news.category=2) as newsreal
WHERE news.category=1 and

newsreal.title LIKE CONCAT('%', news.title, '%')
GROUP BY news.title
ORDER BY COUNT(*) DESC
LIMIT 3
...
Рейтинг: 0 / 0
13.04.2016, 18:04
    #39215005
mast88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартное условие
Krevedko, спасибо, все работает. Только не могу за последнюю неделю вывести популярных людей с большинством записей.

В условие добавляю выборку за неделю - возвращает пустой результат.

Вот так добавляю: WHERE ....... AND tc_date >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY)
...
Рейтинг: 0 / 0
14.04.2016, 00:54
    #39215153
mast88
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нестандартное условие
Все сделал :)
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Нестандартное условие / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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