Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
нужен совет
|
|||
|---|---|---|---|
|
#18+
Есть простенькая база из 2-х таблиц связанная по индексам(unique i regular) один-ко-многим. Таблица А Таблица Б code I(4) --------->> code I(4) name C(25) start_date D(8) other fields end_date D(8) Пользователь на форме просматривает эти таблички в 2-х гридах и иногда вызывает маленькую формочку DO FORM FormFiltr TO lcFilt где указывает параметры фильтра. Форма формирует и возврает строку налоения фильтра, а затем FILTER TO &lcFilt и все работало. Но теперь пользователь хочет выбрать записи из таблици А для которых соотв.записи в таблице Б попадают в выбраный им диапазон. Возможно ли втиснуть это в описанную схему наложения фильтра, или делать что-то новое (типа селектом выбирать)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 16:13 |
|
||
|
нужен совет
|
|||
|---|---|---|---|
|
#18+
Таблица В есть подчинееная А, значит в А влюбом случае есть то что есть в В!!! Теперь по условию поконкретнее пожалуста... Могу только предположить что у тебя там Список какихто фирм или справочник товаров, И твоему пользователю нужен список по диапазону дат, правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 18:28 |
|
||
|
нужен совет
|
|||
|---|---|---|---|
|
#18+
Таблица А - список фирм (со всеми реквизитами) которые обращались за консультацией в нашу компанию, а в Таблице Б - даты когда они это делали и какого рода консультация была. Соединил я их по полю случайніх чисел sys(3) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 20:07 |
|
||
|
нужен совет
|
|||
|---|---|---|---|
|
#18+
Hi Alex! Соединил я их по полю случайн?х чисел sys(3) Очень большая ошибка. По запросу же - SELECT ... FROM A WHERE nID NOT IN (SELECT nID FROM B). Пользоваться SET FILTER для показа данных я никому не советую. P.S. Надеюсь что под Unique индексом ты имел в виду Candidate индекс? В противном случае ты снова сильно заблуждаешься... Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 01:29 |
|
||
|
нужен совет
|
|||
|---|---|---|---|
|
#18+
А можно поподробней (доступно в 2-х словах) почему нельзя пользоваться sys(3) и как тогда привязать дочернюю таблицу если в родительской все поля например С(50). И где я заблуждаюсь поповоду индексов (читал хелп - так как по мне уникальный индекс тоже нормально) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 17:02 |
|
||
|
нужен совет
|
|||
|---|---|---|---|
|
#18+
По порядку. Впихнуть фильтр, в принципе, можно (в твоем случае, просто наложить фильтр на таблицу B), но! -) Наложение фильтров на таблицы, связанные по RELATION - это очень не тривиальная задача. Есть масса тонкостей и глюков. Не всегда получается предсказуемый резльтат. Особенно это касается наличия связи по SET SKIP. -) Выражение фильтра рассчитывается при каждом переходе на очередную строку. Поэтому, чем сложнее фильтр, тем медленнее будет осуществляться перемещение по записям. -) "Аппетит приходит во время еды". Скорее всего, в ближайшее время пользователи захотят еще какой-нибудь фильтр добавить. Кончится это тем, что вся твоя конструкция "рухнет" под тяжестью взаимо-зависимых фильтров Поэтому замени фильтр на выборку по Select-SQL - это более универсальное решение. Возможно, будет относительно медленное открытие (собственно выборка), но просмотр уже безо всяких тормозов. По остальным вопросам, я бы советовал почитать статьи здесь http://www.foxclub.ru/kb/index.php?sid=114698&aktion=anzeigen&rubrik=004 Вторая часть по ключевым полям, третья - по индексам. Вкратце. -) Надеюсь ты в курсе, что индекс типа UNIQUE не запрещает ввод одинаковых значений. Он просто из многих одинаковых значений отображает только одно. Т.е. это своеобразный фильтр, наложенный на таблицу. -) В общем случае, функция SYS(3) не может обеспечить уникальность значения (Почему? Отдельный вопрос. Просто прими как данность). Т.е. прежде чем присвоить значение ключу созданному через SYS(3) необходимо убедиться, что такого значения уже нет в таблице. Или использовать индексы типа CANDIDAT или PRIMARY для исключения таких ситуаций. -) Каждая таблица должна иметь ключевое поле, формируемое как суррогатный ключ (что это такое читай в статье по ссылке). Для связи с родительской таблицей в подчиненной таблице создается "внешний ключ", т.е. поле, содержащее значение ключевого поля родительской таблицы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 22:07 |
|
||
|
нужен совет
|
|||
|---|---|---|---|
|
#18+
Hi Alex Sheff! Можно - читай теорию реляционных БД. Для связи таблиц используется пара - первичный ключ+внешний ключ. Присвоением первичных ключей занимается сама база по какому-то алгоритму, обеспечивающему уникальность получаемых значений (обычно используют вспомогательную таблицу где хранят последний использованный код, а при вставке записей - наращивают его). ни sys(3) ни sys(2015) ни тем более rand() не обеспечивают уникальности получаемых значений. А потому их нельзя использовать для PK, ну и соответственно они не могут наличествовать в FK. где я заблуждаюсь поповоду индексов (читал хелп - так как по мне уникальный индекс тоже нормально) В фоксе UNIQUE - это не уникальный индекс. Уникальный - это CANDIDATE. UNIQUE это разновидность фильтрованного индекса - он не запрещает вводить дубли, а просто скрывает их (исключая из обработки). Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2004, 14:00 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32781073&tid=1595406]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 324ms |
| total: | 455ms |

| 0 / 0 |
