parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

virusav 29.05.2015 09:58

$tЗаявки[^table::sql{SELECT * FROM `заявки`}]
$tЗаказы[^table::sql{SELECT * FROM `заказы`}]
$tПодключения[^table::sql{SELECT * FROM `подключение_заявок`}]
Если бы выборки из базы были без условий, то можно было сразу выбирать хеш таблиц запросом.

1. Выбрать заказы.
2. Прокрутить заказы в цикле для получения списка номеров родительских заявок.
3. Выбрать заявки по списку из п. 2.
4. Прокрутить заявки в цикле для получения списка номеров дочерних заявок.
5. Выбрать подключения по этому из п. 4.

Смущают п. 2 и п. 4.

Самое главное, что надо выводить:
1. Количество всех подключенных дочерних заявок.
2. Количество дочерних заявок, подключенных по данному заказу.
3. ...
Вот тут как раз и начинается свистопляска:
$tTemp[^hЗаявки.[номер_родительской_заявки].select(^hПодключения.contains[$hЗаявки.[номер_родительской_заявки].номер_дочерней_заявки])]
^if(^hПодключения.[$hЗаявки.[номер_родительской_заявки].номер_дочерней_заявки].locate[номер_заказа;$tЗаказы.код]){}
...
Можно, конечно, в цикле прокручивать все дочерние заявки, все подключения по ним и формировать хеш с нужными данными, но потом снова придется все это крутить для вывода в зависимости от полученных данных.

В связи с этим и возник вопрос насчет хеша хешей ... таблиц.
Получил раз из таблицы дочерних заявок и подключений, а потом:
^hData.[номер_родительской_заявки]._count[]
^hData.[номер_родительской_заявки].[номер_дочерней_заявки]._count[]
$hData.[номер_родительской_заявки].[номер_дочерней_заявки].[номер_заказа].[поле с данными о подключении]