Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не могу составить запрос / 11 сообщений из 11, страница 1 из 1
10.01.2004, 20:48
    #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
11.01.2004, 11:32
    #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
11.01.2004, 22:25
    #32372605
nbah
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу составить запрос
а как же "2. количество топиков автора по секциям" ? в этом -- вся загвоздка.
по пункту 3: там действительно нужно количество. среди значений vote есть "затрудняюсь" (кроме баллов), мне нужно вычислять "трудность" автора, то есть общее количество затруднившихся оценить творения автора делить на количество этих самых творений.
...
Рейтинг: 0 / 0
11.01.2004, 22:27
    #32372607
nbah
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу составить запрос
мне нужно количество топиков для каждой секции отдельно. сайчас проверю твой код. спасибо
...
Рейтинг: 0 / 0
11.01.2004, 23:03
    #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
12.01.2004, 13:56
    #32373070
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу составить запрос
Что-то я не пойму что не так?!

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

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

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

Скажи что получилось :)
...
Рейтинг: 0 / 0
12.01.2004, 22:25
    #32373718
nbah
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу составить запрос
Мне нужен один запрос, в котором высчитываются все три параметра за раз. Вариантов пока не было.
...
Рейтинг: 0 / 0
14.01.2004, 10:30
    #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
14.01.2004, 14:53
    #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
18.01.2004, 14:29
    #32379517
nbah
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу составить запрос
эй... кто-нибудь...
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не могу составить запрос / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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