Задавайте вопросы, мы ответим
Вы не зашли.
Необходимо, чтобы результат запроса выглядел не так:
+------+------+-------+
| x | y | data |
+------+------+-------+
| 3 | 3 | 172 |
| 3 | 3 | 721 |
| 3 | 3 | 652 |
| 3 | 3 | 444 |
| 3 | 3 | 781 |
| 2 | 2 | 48 |
| 2 | 2 | 27 |
| 2 | 2 | 13 |
| 2 | 2 | 16 |
| 2 | 2 | 99 |
| 4 | 4 | 4854 |
| 4 | 4 | 2723 |
| 4 | 4 | 1327 |
| 4 | 4 | 1663 |
| 4 | 4 | 9953 |
| 5 | 5 | 48545 |
| 5 | 5 | 27423 |
| 5 | 5 | 12327 |
| 5 | 5 | 16639 |
| 5 | 5 | 99530 |
| 1 | 1 | 4 |
| 1 | 1 | 7 |
| 1 | 1 | 3 |
| 1 | 1 | 6 |
| 1 | 1 | 9 |
+------+------+-------+
а так:
+------+------+-------+
| x | y | data |
+------+------+-------+
| 3 | 3 | 172 |
| | | 721 |
| | 4 | 652 |
| | | 444 |
| | | 781 |
| 2 | 2 | 48 |
| | | 27 |
| | | 13 |
| | 3 | 16 |
| | | 99 |
| 4 | 4 | 4854 |
| | | 2723 |
| | | 1327 |
| | 3 | 1663 |
| | | 9953 |
+------+------+-------+
Возможно ли это и если да, то как должен выглядеть запрос?
Пишу прогу в Delphi, там делаю запрос, результат надо записать в Excel...
Неактивен
Ну так в Delphi и обрабатывайте результат, если предыдущее значение X равно последующему, то пустая строка.
В принципе такое можно и на mysql сделать с помощью пользовательских переменных, но логичней на клиенте.
Неактивен
Если интересно как такое реализовать на MySQL, то читайте до конца тему http://sqlinfo.ru/forum/viewtopic.php?id=1742
Неактивен
Можно и в Delphi, просто есть компонент TJvgExportExcel, который позволяет результат запроса напрямую передать в excel, без каких-либо дополнительных действий. Поэтому внешний вид надо реализовать в результате самого запроса...
Запрос имеет вид:
SELECT CONCAT(surname, " ", hunters.nm, " ", secnm) AS "ФИО", CONCAT(huntcard_serial, " ", huntcard_number, " ", huntcard_who) AS huntcard, CONCAT(period_start, " - ", period_end) AS period, places.nm AS place, animals.nm AS animal,
closed FROM hunters, permission, permission_animals, animals, places WHERE permission_animals.id_animal=animals.id AND hunters.id=permission.id_hunter AND permission.id=permission_animals.id_permission AND place=places.id AND hunters.id=1
Вот только как убрать, например, повторяющиеся ФИО?
Не уверен, что в ссылке http://sqlinfo.ru/forum/viewtopic.php?id=1742 описан нужный алгоритм...
Отредактированно GlamCity (25.11.2012 10:34:39)
Неактивен
GlamCity написал:
Вот только как убрать, например, повторяющиеся ФИО?
Сравнивая значение со значением в предыдущей строке.
GlamCity написал:
Не уверен, что в ссылке http://sqlinfo.ru/forum/viewtopic.php?id=1742 описан нужный алгоритм...
Зря, именно такая идея там и используется.
SELECT if(@i=`фио`,'',@i:=`фио`), ... FROM (ваш запрос) t, (select @i:='') x;
Неактивен
А x в запросе SELECT if(@i=`фио`,'',@i:=`фио`), ... FROM (ваш запрос) t, (select @i:='') x; что означает? можно его не писать?
Неактивен
Не попробуешь, не узнаешь
А чем вам x не нравится?
Неактивен
ну просто зачем лишний код писать? а для чего (select @i:='')?
Неактивен
вот скриншот запроса - че-то не то получается
Неактивен
GlamCity написал:
а для чего (select @i:='')?
первоначальное задание значения переменной
GlamCity написал:
вот скриншот запроса - че-то не то получается
Обратите внимание на используемые мной в запросе кавычки. Не мешало бы поправить и во внутреннем запросе (только вокруг фио)
Неактивен