powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / посчитать кол-во уникальных записей и показать первые 10 наибольших значений по убыванию
20 сообщений из 20, страница 1 из 1
посчитать кол-во уникальных записей и показать первые 10 наибольших значений по убыванию
    #39441519
d0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
d0n
Гость
Честно говоря не думал что на таком застряну ....
не могу написать правильный запрос /в скрипте/
есть tables1 (id,id_t2,content,date....) и tables2 (id,id_t3,fio,mail....)
нужно вывести в форму данные только 10 наибольших значений предворительно посчитав их количество для каждого автора- типа рейтинга чтобы вышло из таких полей: fio,title,kol
Код: sql
1.
2.
$result = mysql_query("select t2.fio, t1.content title Count(t1.content) kol FROM tables2 t2 
left JOIN tables1 t1 ON t2.id=t1.id_t2 group by t2.id ORDER BY  IF(max(kol)) DESC ");
...
Рейтинг: 0 / 0
посчитать кол-во уникальных записей и показать первые 10 наибольших значений по убыванию
    #39441545
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Вас запрос тупо неверен синтаксически. Да и группировка "ниачём".
d0nданные только 10 наибольших значенийНаибольших по какому параметру?
d0nпредворительно посчитав их количествоКого "их"?
d0nчтобы вышло из таких полей: fio,title,kolНу я понимаю, авторы (fio) дублируются... но чтобы ещё и контент (title)... не понимаю. А если они не дублируются, то каждая пара (fio,title) будет в количестве ровно одной штуки, и выбрать из кучи единиц десять "самых больших единиц" может оказаться затруднительно...
...
Рейтинг: 0 / 0
посчитать кол-во уникальных записей и показать первые 10 наибольших значений по убыванию
    #39441668
d0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
d0n
Гость
AkinaУ Вас запрос тупо неверен синтаксически. Да и группировка "ниачём".
не спорю хотел в один запрос пихнуть все , логику потерял .
AkinaНаибольших по какому параметру?
как раз этот параметр нужно посчитать из tables1.content (для каждого tables2.fio будет несколько сотен примерно) и внести полученные цифры в итоговую таблицу вывода, тоесть в столбец kol .и отобразить не все а только 10 наибольших.
Akinad0nчтобы вышло из таких полей: fio,title,kolНу я понимаю, авторы (fio) дублируются... но чтобы ещё и контент (title)... не понимаю. А если они не дублируются, то каждая пара (fio,title) будет в количестве ровно одной штуки, и выбрать из кучи единиц десять "самых больших единиц" может оказаться затруднительно...
да Вы правы!!!! СПАСИБО только сейчас осознал что наверное для рейтинга title нужно отдельный запрос писать
Логично запилить tables3(id,id_t1,kol_citir)-подсчет нажатий/просмотров для каждой статьи
и вот уже в поле title нужно отобразить заголовок наиболее популярной статьи автора ( вывести title "текст" равный - что то типа такого мах(count(t3.kol_citir)) t1.id=t3.id_t1
А вот С синтаксисом у меня проблемы :)
...
Рейтинг: 0 / 0
посчитать кол-во уникальных записей и показать первые 10 наибольших значений по убыванию
    #39441808
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d0n,

Код: sql
1.
2.
3.
select ... , XXX
order by XXX
limit 10
...
Рейтинг: 0 / 0
посчитать кол-во уникальных записей и показать первые 10 наибольших значений по убыванию
    #39441822
d0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
d0n
Гость
MasterZivd0n,

Код: sql
1.
2.
3.
select ... , XXX
order by XXX
limit 10

Так он показывает просто первые 10 (хотя при сортировке по убыванию этот способ подайдет ), вот только сам синтаксис команды хотелось бы подправить - тут уже написали что не верно пишу запрос!
...
Рейтинг: 0 / 0
посчитать кол-во уникальных записей и показать первые 10 наибольших значений по убыванию
    #39441878
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d0n,

давай запрос
...
Рейтинг: 0 / 0
посчитать кол-во уникальных записей и показать первые 10 наибольших значений по убыванию
    #39442073
d0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
d0n
Гость
MasterZiv,

//есть t1(id,id_t2,content,data...) , t2(id,id_t3,fio,mail...) t3(id,id_t1,kol_citir)
// В результате должна выйти таблица (fio,title,kol)
с первым запросом вроде понятно....
-уверен что 2 запрос не правильно написан!!! для него нужно чтоб в столбце title отображался заголовок "наиболее популярной" статьи из таблицы1.content, популярность считается по кол-ву нажатий на статью в таблице3 (или его лучше сразу в первой таблице считать??). как бы получше запилить этот кусок?
Код: sql
1.
2.
3.
4.
5.
 $result1 = mysql_query("select t2.fio Count(t1.content) kol FROM tables2 t2 
left JOIN tables1 t1 ON t2.id=t1.id_t2 group by t2.id ORDER BY  kol DESC limit 10");
  
"select t1.content MAX(Count(t3.kol_citir) title FROM tables1 t1 
left JOIN tables3 t3 ON t1.id=t3.id_t1 "


// синтаксис типа такого - может лучше их объединить в один? или не стоит
...
Рейтинг: 0 / 0
посчитать кол-во уникальных записей и показать первые 10 наибольших значений по убыванию
    #39442103
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d0n , не надо сюда постить пэхапэшную обвязку...

d0nможет лучшеЛучше - сформулировать задачу, а не свои попытки её решать.
...
Рейтинг: 0 / 0
посчитать кол-во уникальных записей и показать первые 10 наибольших значений по убыванию
    #39442172
d0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
d0n
Гость
Akina,
тогда формулирую
имею две таблицы с данными , в третьей считается только кол-во нажатий на статью
t1(id,id_t2,content,data...) , t2(id,id_t3,fio,mail...) t3(id,id_t1,kol_citir)
нужен запрос что бы отразить данные в виде колонок (fio,title,kol) -мои "попытки" смотрите выше ....
по логике: взять для каждого fio из таб2 посчитать количество уникальных статей в таб1(contеnt) и вывести наибольшие 10 шт в колонку kol ,и в столбце title отразить заголовок "наиболее популярной" статьи , его взять из таблицы1.content, сама популярность считается по кол-ву нажатий на статью в таб.3 (kol_citir)
как должен выглядеть правильный запрос?
...
Рейтинг: 0 / 0
посчитать кол-во уникальных записей и показать первые 10 наибольших значений по убыванию
    #39442199
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего не понять.

Что хранится в каждой таблице? по отдельности, плиз.
Как связаны таблицы? если id_tN - это FK на таблицу tN? то у Вас вообще цикл ссылочный получается...

Предположу, что: есть таблица авторов (t2), есть таблица статей (t1), есть таблица ссылок на статью (t3).

Если так - то не понимаю, как связаны авторы и статьи, поскольку у одного автора может быть несколько статей, а у одной статьи (вероятно) может быть несколько авторов...

Если же предположить, что у каждой статьи только один автор, и мы имеем авторы (1:N) статьи (1:N) ссылки, то немного странно выглядит перечисление полей таблиц.
...
Рейтинг: 0 / 0
посчитать кол-во уникальных записей и показать первые 10 наибольших значений по убыванию
    #39442323
d0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
d0n
Гость
Akina,
AkinaЧто хранится в каждой таблице? по отдельности, плиз.....
.....есть таблица авторов (t2), есть таблица статей (t1), есть таблица ссылок на статью (t3).
если упрощать то выходит именно так,
в дополнение в таблице t3 есть счетчик ссылок (считает кол-во нажатий/переходов) - именно по его значению нужно выбрать самую популярную статью автора .

Akinaу каждой статьи только один автор
у автора может быть много статей , а у статьи только один автор и одна ссылка, и аналогично у каждой ссылки несколько переходов(хотя их должен считать счетчик внутри таблицы t3).
Akinaстранно выглядит перечисление полей таблиц.
в итоговой таблице порядок столбцов не принципиален, или не об этом речь?

Если для простоты решения необходимо упразднить таблицу t3 объединив ее t1 - прошу напишите об этом сразу!
...
Рейтинг: 0 / 0
посчитать кол-во уникальных записей и показать первые 10 наибольших значений по убыванию
    #39442333
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d0nу статьи только один автор и одна ссылкаКоли так, то это всё должно быть в одной таблице.

d0nу каждой ссылки несколько переходов(хотя их должен считать счетчик внутри таблицы t3)Непонятная фраза.
...
Рейтинг: 0 / 0
посчитать кол-во уникальных записей и показать первые 10 наибольших значений по убыванию
    #39442351
d0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
d0n
Гость
Akina
d0nу каждой ссылки несколько переходов (хотя их должен считать счетчик внутри таблицы t3)Непонятная фраза.
здесь уточнил что каждое открытие/ПЕРЕХОД на статью сохраняется в самой таблице (SET н=н+1) в виде числа, а уже потом на основе значения данного числа - определяется самая популярная статья для автора .
...
Рейтинг: 0 / 0
посчитать кол-во уникальных записей и показать первые 10 наибольших значений по убыванию
    #39443397
d0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
d0n
Гость
Уважаемые ГУРУ SQL !!!!
моя задача еще не решена, просили сформулировать - а результата еще нет !
Очень прошу еще раз посмотреть задание !
...
Рейтинг: 0 / 0
посчитать кол-во уникальных записей и показать первые 10 наибольших значений по убыванию
    #39443454
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d0nпросили сформулировать - а результата еще нет !Ну а формулировка - где? пока есть начальная слабопонятная формулировка плюс пачка поправок, которые ясности особо не вносят.

Шаблонно задача решается запросом типа
Код: sql
1.
2.
3.
4.
5.
SELECT field1, COUNT( /* DISTINCT */ field2)
FROM table
GROUP BY field1
ORDER BY 2 DESC
LIMIT 10


а конкретики как не было, так и нет - потому и невозможно сказать, что куда должно быть подставлено.
...
Рейтинг: 0 / 0
посчитать кол-во уникальных записей и показать первые 10 наибольших значений по убыванию
    #39443506
d0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
d0n
Гость
Akina,ничего нового я сейчас не напишу - только под итожу:
имею две таблицы с данными
t1(id,id_t2,content,kol_citir) = таб статей, t2(id,id_t3,fio,adres,mail...) =таб.авторов
нужен запрос что бы отразить данные в виде колонок (fio,title,kol)
для каждого fio из таб2 посчитать количество уникальных статей в таб1(contеnt) и вывести наибольшие 10 строк в колонки fio+kol
Код: sql
1.
2.
select t2.fio Count(t1.content) kol FROM tables2 t2 
left JOIN tables1 t1 ON t2.id=t1.id_t2 group by t2.id ORDER BY  kol DESC limit 10 


А также для тех же авторов показать в столбце title заголовок "наиболее популярной" статьи, его название взять из t1.content, число переходов=популярность считается по количеству нажатий в колонке (t1.kol_citir)
запрос нужно объединить в один!
по связям: у автора много статей, у статьи один автор.
...
Рейтинг: 0 / 0
посчитать кол-во уникальных записей и показать первые 10 наибольших значений по убыванию
    #39443637
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Итак. Мы выводим:

1) Авторы.
2) Количество (уникальных) статей автора, взять 10 первых записей.
3) Статью каждого автора, для которой количество максимально.

Для решения задачи формально нужны 2 группировки - для подсчёта по п. 2 по автору, и для подсчёта по п. 3 по автору и статье.
d0nимею две таблицы с данными
t1(id,id_t2,content,kol_citir) = таб статей, t2(id,id_t3,fio,adres,mail...) =таб.авторов
Теперь для каждой таблицы - назначение каждого поля. Где что? И структуры желательно видеть в виде CREATE TABLE, а не лапшой. Вместе с FK.
...
Рейтинг: 0 / 0
посчитать кол-во уникальных записей и показать первые 10 наибольших значений по убыванию
    #39443898
d0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
d0n
Гость
AkinaИтак. Мы выводим:

1) Авторы.
2) Количество (уникальных) статей автора, взять 10 первых записей.
Не совсем так , уточню : для каждого автора посчитать количество статей и вывести только 10 у которых наибольшее число статей.
Akina3) Статью каждого автора, для которой количество максимально.
для этих 10 - верно))

d0nимею две таблицы с данными
t1(id,id_t2,content,kol_citir) = таб статей, t2(id,id_t3,fio,adres,mail...) =таб.авторов
Теперь для каждой таблицы - назначение каждого поля. Где что? И структуры желательно видеть в виде CREATE TABLE, а не лапшой. Вместе с FK.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
create table posts (
id int (10) AUTO_INCREMENT,
id_author int (10) NOT NULL,
content text ( ) NOT NULL,
data date ( ) NOT NULL,
kol_citir int (10 ) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (id_author) REFERENCES users (id)
);
create table users (
id int (10) AUTO_INCREMENT,
id_tab3 int (10) NOT NULL,
fio varchar (50) NOT NULL,
login varchar(15) NOT NULL,
pass varchar(15) NOT NULL,
mail varchar (50) NOT NULL,
adres varchar (50) NOT NULL,
PRIMARY KEY (id),
);


прорвете- так же связи по внеш .ключу- они верны ?
...
Рейтинг: 0 / 0
посчитать кол-во уникальных записей и показать первые 10 наибольших значений по убыванию
    #39443941
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот, другое дело.
Для решения задачи. как выясняется, бОльшая часть полей не нужна в принципе. И связь вылезла.

Итак.

Для решения первой подзадачи (выбор 10 самых "плодовитых" авторов) достаточно запроса:
Код: sql
1.
2.
3.
4.
SELECT id_author, COUNT(id)
FROM posts 
GROUP BY id_author
ORDER BY 2 LIMIT 10


Вторая подзадача (выбор самой-самой статьи) для заданного автора решается следующим коррелированным подзапросом
Код: sql
1.
2.
3.
4.
SELECT id
FROM posts
WHERE id_author = @id_author
ORDER BY kol_citir DESC LIMIT 1



Остаётся всё собрать в кучку и добавить нужные поля вывода

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT u.fio, COUNT(p1.id) cnt,
    (SELECT p2.content
     FROM posts p2
     WHERE p2.id_author = p1.id_author
     ORDER BY p2.kol_citir DESC LIMIT 1
    ) post
FROM posts p1, users u
WHERE p1.id_author = u.id
GROUP BY p1.id_author
ORDER BY COUNT(p1.id) DESC LIMIT 10;
...
Рейтинг: 0 / 0
посчитать кол-во уникальных записей и показать первые 10 наибольших значений по убыванию
    #39444148
d0n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
d0n
Гость
Akina,Ого )))) так просто вышло у Вас! СПАСИБО!
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / посчитать кол-во уникальных записей и показать первые 10 наибольших значений по убыванию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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