Страница 1 из 1

Не Срабывает ни order by ни group by

Добавлено: 14 авг 2008, 19:29
Rishat
Вот часть кода:
select ekndriver.nrec, ekndriver.tabn, katpodr.nrec, katpodr.name
from ekndriver, katpodr
where (( ekndriver.cpodr == katpodr.nrec ))
order by katpodr.name
;
Мне надо отсортировать по katpodr.name.
Команда order by работает только в SQL-запросе (и то с предупреждением), в ARD-отчете не работает.
Команда group by также не срабатывает (даже в SQL-запросе).
Подскажите пожалуйста, есть обходной путь?

Добавлено: 14 авг 2008, 19:43
Den
Ну дык на внешнюю выгрузку уходит..)

1. Попробуй поменять местами
select ekndriver.nrec, ekndriver.tabn, katpodr.nrec, katpodr.name
from ekndriver, katpodr
where (( katpodr.nrec /==ekndriver.cpodr ))
order by katpodr.name

2. Ну или выгрузи во временную таблу, построив нужный индекс.

Добавлено: 15 авг 2008, 09:59
SergZol
при сортировке не по корневой таблице необходимо указывать полный индекс. Исходя из словаря самый подходящий UNN+NAME.
order by пишем примерно так:
order by katpodr.unn+katpodr.name

Добавлено: 15 авг 2008, 11:15
Den
SergZol писал(а):при сортировке не по корневой таблице необходимо указывать полный индекс. Исходя из словаря самый подходящий UNN+NAME.
order by пишем примерно так:
order by katpodr.unn+katpodr.name
А вы попробуйте выполнить запрос

select katorg.name
from basedoc,katorg(KATORG06)
where (( basedoc.corg == katorg.nrec )); и посмотреть результат..

Добавлено: 15 авг 2008, 12:27
timaskraft
А версия Галактики какая? В 5.85 до определенных патчей - не работало Order by

Добавлено: 15 авг 2008, 13:35
Rishat
Галактика 8.10

Добавлено: 15 авг 2008, 14:05
SergZol
Den писал(а):
SergZol писал(а):при сортировке не по корневой таблице необходимо указывать полный индекс. Исходя из словаря самый подходящий UNN+NAME.
order by пишем примерно так:
order by katpodr.unn+katpodr.name
А вы попробуйте выполнить запрос

select katorg.name
from basedoc,katorg(KATORG06)
where (( basedoc.corg == katorg.nrec )); и посмотреть результат..
А зачем указали ИНДЕКС в секции FROM???
Я понял, что Вам нада отсортировать по наименованию организации.
просто по наименованию индекса НЕТ. поэтому сортировка возможна только с внешней выгрузкой. Есть ближайший индекс UNN+NAME. Поэтому можем выполнить сортировку по двум полям ИНН+наименование!!!
Пиши ТАК:
select katorg.name
from basedoc,katorg
where (( basedoc.corg == katorg.nrec ))
order by katorg.unn+katorg.name;

Добавлено: 15 авг 2008, 14:27
Den
Ну это не то,что требуется - товарисчу же надо по name сортировка... а приведенном примере, она все же не по наименованию будет..

Добавлено: 15 авг 2008, 15:08
SergZol
Я же говорю при отсутствии индекса это возможно сделать только на внешней выгрузке.
либо пересмотреть все гомбинации индекса может попадется нужный, где кроме наименования остальные компоненты индекса не заполнены или имеют одинаковый код.

Добавлено: 15 авг 2008, 16:46
Den
select k.name from katmol k, sporder
where ((sporder.ccmol==k.nrec ))
order by k.name;


индекс в katmol по name есть .Но все равно получим внешнюю выгрузку.
Дело в том, что в подцепке явно указан индекс по k.nrec. И неважно какой ты order by сделаешь...

Добавлено: 15 авг 2008, 19:28
Rishat
SergZol писал(а):при сортировке не по корневой таблице необходимо указывать полный индекс. Исходя из словаря самый подходящий UNN+NAME.
order by пишем примерно так:
order by katpodr.unn+katpodr.name
на ваше сообщение отвечаю : в таблице katpodr нет поля unn, поэтому данное решение не подходит :(

Добавлено: 15 авг 2008, 19:31
Rishat
SergZol писал(а):
Den писал(а):
SergZol писал(а):при сортировке не по корневой таблице необходимо указывать полный индекс. Исходя из словаря самый подходящий UNN+NAME.
order by пишем примерно так:
order by katpodr.unn+katpodr.name
А вы попробуйте выполнить запрос

select katorg.name
from basedoc,katorg(KATORG06)
where (( basedoc.corg == katorg.nrec )); и посмотреть результат..
А зачем указали ИНДЕКС в секции FROM???
Я понял, что Вам нада отсортировать по наименованию организации.
просто по наименованию индекса НЕТ. поэтому сортировка возможна только с внешней выгрузкой. Есть ближайший индекс UNN+NAME. Поэтому можем выполнить сортировку по двум полям ИНН+наименование!!!
Пиши ТАК:
select katorg.name
from basedoc,katorg
where (( basedoc.corg == katorg.nrec ))
order by katorg.unn+katorg.name;
Нужно отсортировать по наименованию ПОДРАЗДЕЛЕНИЯ, работников из таблицы Ekndriver.
И еще вопрос: а как работать с внешней выгрузкой? Просто никогда не сталкивался с этим.