|
|
|
Помогите сделать выборку
|
|||
|---|---|---|---|
|
#18+
В общем есть база 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 пробовала разные - что то в корне не то... может как-то с подзапросами надо еще... подскажите в какую сторону думать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2014, 17:13:20 |
|
||
|
Помогите сделать выборку
|
|||
|---|---|---|---|
|
#18+
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 ................ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2014, 20:36:35 |
|
||
|
Помогите сделать выборку
|
|||
|---|---|---|---|
|
#18+
Получите в подзапросе список дат, и используйте его как опорный. Типа Код: sql 1. 2. 3. 4. Проблема возникнет, если на какую-то дату требуемого периода вообще нет записей - ну тогда и вправду генерите опорную таблицу дат (можно динамически, если период невелик, или статически). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2014, 21:59:54 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38696291&tid=1834512]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
68ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 244ms |
| total: | 421ms |

| 0 / 0 |
