powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Динамическая фильтрация по полям из разных таблиц. Как?
7 сообщений из 7, страница 1 из 1
Динамическая фильтрация по полям из разных таблиц. Как?
    #33003559
Офион
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.
Есть две таблицы: Места реализации товара и Группы товара.
Есть третья таблица - сам Товар.
Нужно отфильтровать базу Товар, основываясь на выбранных в данный момент Месте и Группе товара.
Т.е. я должен вывести на экран какой Товар из выбранной Группы сейчас находится на выбранном Месте.
Сделал так: создал ключевое поле I1 в таблице Место. Ключевое поле I2 в таблице Группа. А в таблицу Товар добавил оба этих поля, чтобы по ним и фильтровать. Дальше делаю явно не то.
Пишу на BC++.
Знаю как фильтровать по строке из одной таблицы: SELECT * FROM TOVAR WHERE I1=:I1;
Это если QueryTovar, исполняющий эту строку, привязан через DataSource к QueryMesto. Всё срабатывает автоматом.
А как фильтровать по полям из разных таблиц?
...
Рейтинг: 0 / 0
Динамическая фильтрация по полям из разных таблиц. Как?
    #33003641
Andres 1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правильно понял вопрос, то нужен запрос типа
Код: plaintext
SELECT * FROM TOVAR WHERE I1= 25  AND I2= 7 
Где 25 - идентификатор какго-то места, а 7 - группы.
Что за зверь BC++ - не знаю, но, наверное, там есть sprintf или что-то подобное для составления такой строки?

Для общего развития рекомендую или книжку по SQL, или MS Access - там есть встроенный дизайнер запросов и справка.
...
Рейтинг: 0 / 0
Динамическая фильтрация по полям из разных таблиц. Как?
    #33003646
rgarif
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ябы не сешивал тут SQL и BC++(), равно как не сталбы привязывать жестко товары к месту, но раз условия таковы, то нужно обрабатывать ondatachange у ds_groups и этоже событие ds_mesto. В обоих событиях вызываешь процедурку котороая формирует запрос вида
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
with QueryTovar,SQL do begin
  Close;Clear;
  Add('select * from tovar');
  Add('where i1='+QueryGruppa.fieldbyname('i1').asString;
  Add('  and i2='+QueryMesto.fieldbyname('i2').asString;
  Open;
end;

но схема ущербна ибо "Товар" "Группа" "Место" ето есть справочники, и их должно связывать чтото гибкое... (торар с руппой связать можно и нужно и сделано верно)
но что будет если он поменяет "место" ?
...
Рейтинг: 0 / 0
Динамическая фильтрация по полям из разных таблиц. Как?
    #33003650
Andres 1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:)

Я имел в виду именно это - я же не знал, что в BC++ возможна конкатенация строк без геморроя, вот и посоветовал sprintf для составления строки запроса (на лету) - а мысль та же.
...
Рейтинг: 0 / 0
Динамическая фильтрация по полям из разных таблиц. Как?
    #33003651
rgarif
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Andres 1
в БС++ там даже querybuilder есть :)
но схему ябы переделал, и тему бы енту отсюда перенес...
...
Рейтинг: 0 / 0
Динамическая фильтрация по полям из разных таблиц. Как?
    #33003653
rgarif
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
p.s
да енто ваще делфийский код
...
Рейтинг: 0 / 0
Динамическая фильтрация по полям из разных таблиц. Как?
    #33004262
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgarifно схема ущербна ибо "Товар" "Группа" "Место" ето есть справочники, и их должно связывать чтото гибкое...
В известном мне компоненте фильтра применялись две реализации (на выбор, в зависимости от настроек).

В более простом случае в where добавлялось " ... and exists (select from dictionary where filter = :filter and master_id = :master_id )". В более сложном - справочник, по которому идет фильтрация, добавлялся во from, ну и соответственно дописывался where. Это принцип, ну а с эффективностью надо смотреть по месту
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Динамическая фильтрация по полям из разных таблиц. Как?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]