powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не могу составить запрос
11 сообщений из 11, страница 1 из 1
Не могу составить запрос
    #32372386
nbah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дано. Три таблицы:
1. authors (поля: login) - авторы
2. topics (topic_id, login, section) - топики (section может принимать значения prose, poety и journal)
3. vote (topic_id, vote) - голоса

Составить запрос выуживающий из БД следующие значения:
1. login автора
2. количество топиков автора по секциям
3. для каждой оценки (они все известны заранее) колчество полученных оценок (по каждой секции)
...
Рейтинг: 0 / 0
Не могу составить запрос
    #32372476
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3. для каждой оценки (они все известны заранее) колчество полученных оценок (по каждой секции)

тут что то не понятно кол-во оценок или сумма ???

select a.login,count(t.topic_id),t.section,sum(v.vote)
from authors a,topics t,vote v
where a.login = t.login and v.topic_id = t.topic_id
group by a.login,t.topic_id,t.section

может так

хотя наскрябал за минуту не уверен что работает :)


____
...
Рейтинг: 0 / 0
Не могу составить запрос
    #32372605
nbah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как же "2. количество топиков автора по секциям" ? в этом -- вся загвоздка.
по пункту 3: там действительно нужно количество. среди значений vote есть "затрудняюсь" (кроме баллов), мне нужно вычислять "трудность" автора, то есть общее количество затруднившихся оценить творения автора делить на количество этих самых творений.
...
Рейтинг: 0 / 0
Не могу составить запрос
    #32372607
nbah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне нужно количество топиков для каждой секции отдельно. сайчас проверю твой код. спасибо
...
Рейтинг: 0 / 0
Не могу составить запрос
    #32372620
nbah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, не работает. Мой запрос такой (без подсчета "средней трудности"):

SELECT authors.name as name, authors.email, authors.date, authors.login,
IFNULL(SUM(IF(topics.section='prose',1,0)),-1) as prose,
IFNULL(SUM(IF(topics.section='poetry',1,0)),-1) as poetry,
IFNULL(SUM(IF(topics.section='journal',1,0)),-1) as journal,
FROM topics LEFT JOIN authors USING (login)
GROUP BY authors.login
ORDER BY $dataRange

Запрос рабочий, но неполноценый. Трудность автора в секции я высчитываю отдельно для каждого автора => невозможность сортировки по этому параметру
...
Рейтинг: 0 / 0
Не могу составить запрос
    #32373070
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то я не пойму что не так?!

mahoune
...
Рейтинг: 0 / 0
Не могу составить запрос
    #32373140
Алексей В.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2. количество топиков автора по секциям

По моему так, не проверял

select login, section, count(*)
from topics
group by login, section

Скажи что получилось :)
...
Рейтинг: 0 / 0
Не могу составить запрос
    #32373718
nbah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне нужен один запрос, в котором высчитываются все три параметра за раз. Вариантов пока не было.
...
Рейтинг: 0 / 0
Не могу составить запрос
    #32375298
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то так, надо полагать! Или через временную таблицу...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
SELECT
  a.login,
  SUM(IF(t1.topic_id IS NULL, 0 , 1 ) AS TopicsInProse,
  SUM(IF(t2.topic_id IS NULL, 0 , 1 ) AS TopicsInPoetry,
  SUM(IF(t3.topic_id IS NULL, 0 , 1 ) AS TopicsInJournal,
  SUM(ISNULL(v1.vote, 0 )) AS VotesInProse,
  SUM(ISNULL(v2.vote, 0 )) AS VotesInPoetry,
  SUM(ISNULL(v3.vote, 0 )) AS VotesInJournal

FROM authors a
  LEFT JOIN topics t1 ON a.login=t.login AND t1.section = 'prose'
  LEFT JOIN topics t2 ON a.login=t.login AND t1.section = 'poetry'
  LEFT JOIN topics t3 ON a.login=t.login AND t1.section = 'journal'
  LEFT JOIN vote v1 ON t1.topic_id=v1.topic_id
  LEFT JOIN vote v2 ON t2.topic_id=v2.topic_id
  LEFT JOIN vote v3 ON t3.topic_id=v3.topic_id

GROUP BY a.login
mahoune
...
Рейтинг: 0 / 0
Не могу составить запрос
    #32375810
nbah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробую

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SELECT
a.login,
SUM(IF(t1.topic_id IS NULL, 0 , 1 )) AS TopicsInProse,
SUM(IF(t2.topic_id IS NULL, 0 , 1 )) AS TopicsInPoetry,
SUM(IF(t3.topic_id IS NULL, 0 , 1 )) AS TopicsInJournal,
SUM(ISNULL(v1.vote)) AS VotesInProse,
SUM(ISNULL(v2.vote)) AS VotesInPoetry,
SUM(ISNULL(v3.vote)) AS VotesInJournal

FROM authors a
LEFT JOIN topics t1 ON a.login=t1.login AND t1.section = 'prose'
LEFT JOIN topics t2 ON a.login=t2.login AND t2.section = 'poetry'
LEFT JOIN topics t3 ON a.login=t3.login AND t3.section = 'journal'
LEFT JOIN vote v1 ON t1.topic_id=v1.topic_id
LEFT JOIN vote v2 ON t2.topic_id=v2.topic_id
LEFT JOIN vote v3 ON t3.topic_id=v3.topic_id

GROUP BY a.login


TopicsInProse увеличивается с числом давших оценку. Не то
...
Рейтинг: 0 / 0
Не могу составить запрос
    #32379517
nbah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эй... кто-нибудь...
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не могу составить запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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