powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите сделать выборку
4 сообщений из 4, страница 1 из 1
Помогите сделать выборку
    #38696105
Lusika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем есть база id, data, user, result
В ней хранятся данные в виде
id data user result
1 01.01.2003 1 18
2 01.01.2003 2 38
3 01.01.2003 3 21
4 02.01.2003 1 15
5 02.01.2003 3 36
6 03.01.2003 1 20
7 04.01.2003 1 22
8 04.01.2003 2 24
9 04.01.2003 3 11

Задача - вывести таблицу типа
Дата Результат user1 Резльтат user2 Результат user3
01.01.2003 18 38 21
02.01.2003 15 - 36
03.01.2003 20 - -
04.01.2003 22 24 11

Пыталась запросом типа
select t.data, t.result1 as user1, t1.result2 as user2, t2.result2 as user3 FROM restable t LEFT JOIN restable t1 ON(t1.date=t.date) LEFT JOIN restable t2 ON(t2.date=t.date) WHERE t.user=1 AND t1.user=2 AND t2.user=3
Если для всех юзеров на все даты есть данные то такой запрос выводит то что надо, а если хоть где-то нет, то лажа - типы JOIN пробовала разные - что то в корне не то... может как-то с подзапросами надо еще... подскажите в какую сторону думать...
...
Рейтинг: 0 / 0
Помогите сделать выборку
    #38696291
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lusika,

если надо по всем дата и записи может не быть --
то надо заиметь так называемую "опорную" таблицу
дат. Просто создайте сквозную таблицу с единственым полем
ДАЙТ и заполните на 10 лет вперед
затем будет что то типа:

select ...........
from
(select datex from dates where datex between '2014-01-01' and '2014-02-01') dd
LEFT join user_events u ON dd.datex = u.event_date
................
...
Рейтинг: 0 / 0
Помогите сделать выборку
    #38696326
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получите в подзапросе список дат, и используйте его как опорный. Типа

Код: sql
1.
2.
3.
4.
select dates.data, t1.result user1, ... 
(select r.data from restable r where r.data between :StartDate and :EndDate) as dates
left join restable t1 on t1.data = dates.data and t1.user = 1
...



Проблема возникнет, если на какую-то дату требуемого периода вообще нет записей - ну тогда и вправду генерите опорную таблицу дат (можно динамически, если период невелик, или статически).
...
Рейтинг: 0 / 0
Помогите сделать выборку
    #38696357
Lusika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромное спасибо!!! То что надо! Здесь подзапроса достаточно будет, но и про опорную таблицу тоже пригодится!
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите сделать выборку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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