|
|
|
Проблема со связью
|
|||
|---|---|---|---|
|
#18+
Здравствуйте всем ! Будьте добры подскажите ответ на следующий вопрос: Я устанавливаю связь следующим образом - программно на load: select proisvod2 set order to tag id_tovar select tovar2 set relation to id into proisvod2 А мне необходимо еще в этой связи - когда я хожу по таблице tovar2 - не только видеть соответствующие записи в таблице proisvod2 - это все правильно работает, но они не отсортированы по алфавиту ! Мне бы хотелось это сделать ! спасибо! Вариант с select proisvod2 set order to tag name_p - не проходит - тогда вообще ничего нет! Помогите пожалуйста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 13:50 |
|
||
|
Проблема со связью
|
|||
|---|---|---|---|
|
#18+
Вообще-то, для подобных задач лучше пользоваться не связью, а Local View или Select-SQL. Т.е. при перемещении по записям главной таблицы повторяется выборка по подчиненной таблице с нужным порядком сортировки А в данном случае можно так: ================= Еще одна тонкость заключается в том, что связь можно настроить не по полному, а по частичному (по первым символам) совпадению ключа. Разумеется, если используется настройка SET EXACT OFF (это настройка по умолчанию). Например, если подчиненная таблица имеет 2 поля ParentID и NickName и требуется упорядочить записи в пределах каждого значения ParentID в алфавитном порядке NickName, то в подчиненной таблице строится примерно такой индекс: INDEX ON ParentID+NickName TAG SortOrd Здесь я предполагаю, что ParentID - это поле символьного типа. Тогда в главной таблице настраивается связь по выражению только ParentID SET RELATION TO ParentID INTO ChildTab ========================== Это цитата отсюда http://www.foxclub.ru/articles/index.php?id=36#OrdinaryRelationship ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 14:07 |
|
||
|
Проблема со связью
|
|||
|---|---|---|---|
|
#18+
мы тут конечно все экстрасенсы и на расстоянии знаем какие у вас таблицы и индексы Но скорее всего нужно создать составной индекс в таблице proisvod2 str(id_tovar)+name_p и relation делать по str(id) SET exact должен быть обязательно OFF ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 14:18 |
|
||
|
Проблема со связью
|
|||
|---|---|---|---|
|
#18+
В proisvod2 обязательно должен быть активен индекс по ключу, т.к. по нему связка идет. Для сортировки по proisvod2.name_p надо: 1. Предварительно создать временную таблицу select`ом а потом ее показывать. Минус - долго формируется, если записей много 2. Продублировать поле name_p в tovar2 (можно не полное поле например первые 10 символов) и использовать индекс по tovar2.name_p. Минус - надо поддерживать соответствие между proisvod2.name_p и tovar2.name_p ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 14:27 |
|
||
|
Проблема со связью
|
|||
|---|---|---|---|
|
#18+
лучше всего применить запрос и его подставить вместо таблицы, если не получается сделать полноценное представление. select * from NameParent p,TableChild c where c.MyIndez = p.ParentIndex order by PoleSortirovki Что-то эдакое в зависимости от ваших таблиц сильно упростит жизнь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 14:32 |
|
||
|
Проблема со связью
|
|||
|---|---|---|---|
|
#18+
мы тут конечно все экстрасенсы и на расстоянии знаем какие у вас таблицы и индексы Но скорее всего нужно создать составной индекс в таблице proisvod2 str(id_tovar)+name_p и relation делать по str(id) SET exact должен быть обязательно OFF. Я не много вас не понял - хотя то что Вы мне прелагаете - это Вы правильно поняли! Все поля (char) - я понял надо создать сложный индекс: ids Regular id_tovar + name_p, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 15:55 |
|
||
|
Проблема со связью
|
|||
|---|---|---|---|
|
#18+
dima_18... Все поля (char) - я понял надо создать сложный индекс: ids Regular id_tovar + name_p, Не поможет. Порядок сортировки задается для таблицы tovar2 , а насколько сильны мои экстрасенсорные возможности :), поле name_p как понимаю в таблице proisvod2 Соответственно у тебя выводится таблица tovar2 в том порядке какой там индекс активен, а из таблицы proisvod2 берутся соответствующие name_p по tovar2.id = proisvod2.tovar_id Можно сделать составной индекс tovar2.name + proizvod2.name_p для таблицы tovar, но это изврат, т.к. везде надо держать эту связку на случай изменения индекса Может все-таки тебе наоборот надо? Код: plaintext 1. 2. 3. 4. А вообще-то не помешало бы увидеть структуру таблиц (поля которые в связках, индексах и отображении учавствуют), используемые индексы с индексными выражениями ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2006, 16:22 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34037793&tid=1590623]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 277ms |
| total: | 426ms |

| 0 / 0 |
