
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
24.07.2015, 12:53:09
|
|||
|---|---|---|---|
|
|||
Помогите составить запрос |
|||
|
#18+
Здравствуйте, имеем две базы: mysql> select * from name; +----+-------+ | id | fio | +----+-------+ | 1 | test1 | | 2 | test2 | | 3 | test3 | +----+-------+ 3 rows in set (0.04 sec) mysql> select * from count; +----+------+------+------------+---------+ | id | num | sum | date | name_id | +----+------+------+------------+---------+ | 1 | 1 | 10 | 2015-07-21 | 3 | | 2 | 1 | 100 | 2015-07-21 | 1 | | 3 | 1 | 200 | 2015-07-21 | 2 | | 4 | 2 | 50 | 2015-07-21 | 1 | | 5 | 3 | 230 | 2015-07-21 | 1 | | 6 | 2 | 220 | 2015-07-21 | 2 | +----+------+------+------------+---------+ 6 rows in set (0.00 sec) На выходе хотелось бы получить что-то вроде такой таблицы: +------+------+------+------+ | fio | 1 | 2 | 3 | +------+------+------+------+ |test1 | 100 | 50 | 230 | |test2 | 200 | 220 | | |test3 | 10 | 200 | | +-----+-------+------+------+ где fio определяется по name_id, а цифры в шапке это значение num. Пока остановился на таком запросе: Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.07.2015, 20:39:12
|
|||
|---|---|---|---|
Помогите составить запрос |
|||
|
#18+
MySQL не знает про PIVOT. Эмулировать пачкой джойнов либо делать через ХП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.07.2015, 11:18:13
|
|||
|---|---|---|---|
|
|||
Помогите составить запрос |
|||
|
#18+
AkinaMySQL не знает про PIVOT. Эмулировать пачкой джойнов либо делать через ХП.да ладно... Нет, конечно, команды pivot нету. Но ведь и команда эта не более чем упрощенная запись для group by с кучей case ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.07.2015, 14:36:32
|
|||
|---|---|---|---|
Помогите составить запрос |
|||
|
#18+
Cygapb-007команды pivot нету. Но ведь и команда эта не более чем упрощенная запись для group by с кучей case Ну вот только ерунды говорить не надо, да... скажи наоборот - ещё более или менее будет на правду похоже. Какая бы ни куча кейсов - она фиксирована, а структура выходного набора детерминирована. А у пивота структура выходного набора динамическая, и зависит она от исходных данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.07.2015, 16:38:53
|
|||
|---|---|---|---|
|
|||
Помогите составить запрос |
|||
|
#18+
Код: plsql 1. Данный запрос выводит : Код: plaintext 1. 2. 3. 4. 5. 6. Но теперь остается вопрос с датой, если добавлять в sum(if(num=1,sum, date )), то суммируется дата и значение sum. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.07.2015, 18:40:16
|
|||
|---|---|---|---|
Помогите составить запрос |
|||
|
#18+
А что с датой? У тебя в примере она в выходной набор вообще не попадает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.07.2015, 21:09:49
|
|||
|---|---|---|---|
|
|||
Помогите составить запрос |
|||
|
#18+
AkinaА что с датой? У тебя в примере она в выходной набор вообще не попадает... Неправильно сформулировал суть вопроса, дата нужна. И вообще суть такова - есть группа вкладчиков, есть фонд, нужна таблица с информацией кто(fio), сколько раз(num), какую сумму(sum) и когда(date) внес. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2015, 00:14:09
|
|||
|---|---|---|---|
|
|||
Помогите составить запрос |
|||
|
#18+
Akinaу пивота структура выходного набора динамическая, и зависит она от исходных данных.а можно пример? Без prepared? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2015, 00:19:51
|
|||
|---|---|---|---|
|
|||
Помогите составить запрос |
|||
|
#18+
Использование операторов PIVOT и UNPIVOT https://technet.microsoft.com/ru-ru/library/ms177410(v=sql.105).aspx Синтаксис оператора PIVOT является более простым и понятным, чем синтаксис, который может выполнить то же действие с помощью последовательности инструкций SELECT...CASE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2015, 00:39:43
|
|||
|---|---|---|---|
|
|||
Помогите составить запрос |
|||
|
#18+
vitalmarНа выходе хотелось бы получить что-то вроде такой таблицы: fio 1 2 3 test1 100 50 230 test2 200 220 test3 10 200 где fio определяется по name_id, а цифры в шапке это значение num. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2015, 01:12:14
|
|||
|---|---|---|---|
|
|||
Помогите составить запрос |
|||
|
#18+
Cygapb-007 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Спасибо за вариант, но чем он отличается от моего кроме max? И кроме суммы мне необходимо выводить дату... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2015, 01:58:26
|
|||
|---|---|---|---|
|
|||
Помогите составить запрос |
|||
|
#18+
По итогу получилось так: Код: plsql 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. 3. 4. 5. 6. Осталось придумать вариант, где точное кол-во num не известно и может динамически меняться в сторону увеличения... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2015, 07:56:02
|
|||
|---|---|---|---|
|
|||
Помогите составить запрос |
|||
|
#18+
vitalmarОсталось придумать вариант, где точное кол-во num не известно и может динамически меняться в сторону увеличения...это называется динамический pivot В строке формируется запрос с явным перечислением уникальных значений поля (в итоге строка будет содержать этот ваш запрос, но для всех значений), а потом выполняется через PREPARED. Но на самом деле этим удобнее заниматься на стороне клиента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2015, 08:05:48
|
|||
|---|---|---|---|
Помогите составить запрос |
|||
|
#18+
AkinaCygapb-007команды pivot нету. Но ведь и команда эта не более чем упрощенная запись для group by с кучей case Ну вот только ерунды говорить не надо, да... скажи наоборот - ещё более или менее будет на правду похоже. Какая бы ни куча кейсов - она фиксирована, а структура выходного набора детерминирована. А у пивота структура выходного набора динамическая, и зависит она от исходных данных. смотря в какой субд. в оракле например структура набора фиксирована. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2015, 08:12:36
|
|||
|---|---|---|---|
|
|||
Помогите составить запрос |
|||
|
#18+
MasterZivAkinaпропущено... Ну вот только ерунды говорить не надо, да... скажи наоборот - ещё более или менее будет на правду похоже. Какая бы ни куча кейсов - она фиксирована, а структура выходного набора детерминирована. А у пивота структура выходного набора динамическая, и зависит она от исходных данных. смотря в какой субд. в оракле например структура набора фиксирована.О, может быть, вы сможете привести пример субд с динамическим пивотом без ухищрений с DSQL? Имею в виду реляционные субд, конечно же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2015, 19:02:27
|
|||
|---|---|---|---|
Помогите составить запрос |
|||
|
#18+
vitalmarПо итогу получилось так: Будет работать только при условии, что в исходных данных пары (num, name_id) уникальны. vitalmarОсталось придумать вариант, где точное кол-во num не известно и может динамически меняться в сторону увеличения... Prepared statement без вариантов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2015, 19:10:41
|
|||
|---|---|---|---|
Помогите составить запрос |
|||
|
#18+
Cygapb-007а можно пример? Без prepared? Пример чего? PIVOT в исполнении MySQL? Так уже ж сказано - не знает. Cygapb-007 Использование операторов PIVOT и UNPIVOT https://technet.microsoft.com/ru-ru/library/ms177410(v=sql.105).aspx Синтаксис оператора PIVOT является более простым и понятным, чем синтаксис, который может выполнить то же действие с помощью последовательности инструкций SELECT...CASE. Из этого следует, что конструкцию с кейсами можно заменить пивотом. Но ни в коем случае не следует, что пивот можно заменить пачкой кейсов. Ты только подтверждаешь сказанное мной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.07.2015, 02:20:09
|
|||
|---|---|---|---|
|
|||
Помогите составить запрос |
|||
|
#18+
AkinaCygapb-007а можно пример? Без prepared? Пример чего? PIVOT в исполнении MySQL? Так уже ж сказано - не знает. Cygapb-007 Использование операторов PIVOT и UNPIVOT пропущено... Из этого следует, что конструкцию с кейсами можно заменить пивотом. Но ни в коем случае не следует , что пивот можно заменить пачкой кейсов. Ты только подтверждаешь сказанное мной.Нууу... как же не следует? :(Синтаксис оператора PIVOT является более простым и понятным, чем синтаксис, который может выполнить то же действие с помощью последовательности инструкций SELECT...CASE . Если б пивот умел сам столбцы формировать, он был бы кубом :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.07.2015, 22:19:08
|
|||
|---|---|---|---|
Помогите составить запрос |
|||
|
#18+
Cygapb-007, если список значений count.num заранее неизвестен, исходная задача всё равно легко решается пивотом. Если ты так убеждён в своей правоте, покажи, как реализовать исходную задачу в этих условиях на кейсах без динамического SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.07.2015, 20:26:16
|
|||
|---|---|---|---|
|
|||
Помогите составить запрос |
|||
|
#18+
AkinaCygapb-007, если список значений count.num заранее неизвестен, исходная задача всё равно легко решается пивотом . Если ты так убеждён в своей правоте, покажи, как реализовать исходную задачу в этих условиях на кейсах без динамического SQL.я уже в котором посте подряд безрезультатно пытаюсь получить пример кода с пивотом, решающим эту проблему, в любой субд, в которой есть пивот. ПРИМЕР легкого решения - В СТУДИЮ! Для неизвестного заранее списка значений вариантов всего два: DSQL или обработка данных в клиенте, причем второе более предпочтительно. Что касается 17934723 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. то в MS SQL это можно записать так: Код: sql 1. 2. 3. 4. и это конечно же проще для понимания, но - динамики нет ровно настолько, насколько ее нет и в case-варианте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.07.2015, 14:07:48
|
|||
|---|---|---|---|
Помогите составить запрос |
|||
|
#18+
Cygapb-007ПРИМЕР легкого решения - В СТУДИЮ Перекрёстный запрос в MS Access. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.07.2015, 15:38:45
|
|||
|---|---|---|---|
|
|||
Помогите составить запрос |
|||
|
#18+
AkinaCygapb-007ПРИМЕР легкого решения - В СТУДИЮ Перекрёстный запрос в MS Access.Ну так это не пивот... Это сводная таблица, то есть обработка данных на стороне клиента Access совмещает в себе серверную и клиентскую части, поэтому в нем не заметна такая подмена понятий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&tablet=1&tid=1832891]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
41ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 313ms |

| 0 / 0 |
