SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 08.09.2016 13:08:39

dima-gr
Участник
Зарегистрирован: 08.09.2016
Сообщений: 2

Вывод результата в иерархическом порядке

Есть таблица мест

id     market_id     sektor_id     row     num
1          2                 1              a     123
2          2                 1              a     312
3          2                 1              g     54
4          2                 2              a     432
5          1                 1              g     4
6          1                 1              g     7

Мне необходимо привести таблицу примерно к такому результату

market_id     sektor_id    row    num
      2                 1            a      123
      -                  -             -      312
      -                  -             g       54
      -                  2            a      432

      1                 1            g         4
      -                  -             -         7

Т. е. чтобы результат выводился в иерархическом порядке как в массивах

[market_id] => array(
     [sektor_id] => array(
          [row] => array(
               [num] => array(
                    ....
               )
          )
     )
)

Вообще реально ли сделать такой вывод при помощи mysql или уже форматировать вывод как-то программно?
Если можно, то в "какую сторону" мне смотреть?
Был бы очень признателен за совет или подсказку.
Заранее спасибо!

Неактивен

 

#2 09.09.2016 12:48:26

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Вывод результата в иерархическом порядке

Можно поиграть с переменными, но я бы делал в приложении, если честно. Особого смысла делать такую магию в базе нету.

[blendie] root test > SELECT * FROM a;
+------+
| a    |
+------+
|    1 |
|    1 |
|    1 |
|    2 |
|    2 |
|    3 |
+------+
6 rows in set (0,00 sec)

[blendie] root test > SET @x:=''; SELECT IF(a=@x,'-',@x:=a) FROM a;
Query OK, 0 rows affected (0,00 sec)

+--------------------+
| IF(a=@x,'-',@x:=a) |
+--------------------+
| 1                  |
| -                  |
| -                  |
| 2                  |
| -                  |
| 3                  |
+--------------------+
6 rows in set (0,00 sec)

Неактивен

 

#3 09.09.2016 12:51:50

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 847

Re: Вывод результата в иерархическом порядке

dima-gr написал:

чтобы результат выводился в иерархическом порядке как в массивах

dima-gr написал:

Вообще реально ли сделать такой вывод при помощи mysql или уже форматировать вывод как-то программно?

Нет, не реально.
MySQL всегда даст двумерный массив.
Обрабатывать его нужно уже в приложении.

Неактивен

 

#4 09.09.2016 12:54:41

dima-gr
Участник
Зарегистрирован: 08.09.2016
Сообщений: 2

Re: Вывод результата в иерархическом порядке

Спасибо за ответы, уже занимаюсь обработкой запроса в приложении, просто было интересно можно было так сделать в mysql или нет. Спасибо.
Тему можно закрывать.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson