Перейти к содержимому


Поиск записей в таблице по данным других таблиц

поиск фильтр

Сообщений в теме: 9

#1 Riddick

    Активный участник

  • Пользователи
  • PipPipPip
  • 70 сообщений

Отправлено 26 Май 2014 - 13:56

Доброго дня. Подскажите, возможно ли реализовать такой умный поиск (или фильтр)? Имеется таблица рейсов с полем связи на таблицу маршрутов, таблица маршрутов связана с таблицей остановок. Как мне вывести список рейсов, указав определенные точки маршрута?

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 26 Май 2014 - 13:59

Нет, такой возможности в программе нет, поиск идет только по полям самой таблицы.

#3 Riddick

    Активный участник

  • Пользователи
  • PipPipPip
  • 70 сообщений

Отправлено 26 Май 2014 - 16:22

Печально, конечно, но как же мне быть? Я пишу конфигурацию для продажи проездных билетов, нужно выводить доступные рейсы при вводе даты и точек отправления и назначения. Есть идеи каким макаром это сделать? Нужен динамический фильтр с запросом значений. Неужели нет такого механизма?

#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 26 Май 2014 - 17:06

Добавьте вычисляемые поля, в которые будут подтягиваться данные по точкам в зависимости от выбранного маршрута. Других вариантов нет.

#5 Riddick

    Активный участник

  • Пользователи
  • PipPipPip
  • 70 сообщений

Отправлено 26 Май 2014 - 23:06

То ли я не догоняю,то ли вы меня не так поняли. Есть рейс "№1", он ездит по маршруту "A-B-C", где A, B, C это остановки. А человеку нужен билет из точки А в точку В. Поэтому ему нужно куда-то вписать эти точки и нажать кнопку "найти нужные рейсы". Короче говоря, нужен динамический фильтр с запросом значений. Я сделал фильтр в таблице с рейсами:
`Рейс` in (select рейс from ЦЕНЫ where Откуда = 1 and Куда = 2)
1 и 2 это id остановок, названия полей привел схематично. Так вот мне нужна возможность задавать откуда и куда при каждом поиске. Я думал в сторону всплывающего окна с запросом, но яваскрипт в режиме таблицы не работает, так что больше вариантов нет.

Резюме. Динамические фильтры это жизненно необходимый для полноценной работы механизм. Лично я жду его появления с большим нетерпением.
Поиск же работает с динамическими данными, но не может делать запросы к другим таблицам. Фильтр может делать такие запросы, но только с постоянными значениями. Надо как-то совместить.

#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 27 Май 2014 - 09:26

Что вы подразумеваете под динамическими фильтрами, не совсем понял? В чем разница с существующими фильтрами?

Что касается точек в поиске через вычисляемые поля: можно вывести список всех точек по маршруту в вычисляемое поле через перевод строки к примеру, и искать по ним через "содержит". Соглашусь, что это не совсем идеальный вариант, но лучше чем ничего. А лучше всего (на данный момент) сделать отдельное свое представление с формой поиска по точкам и выводить данные поиска там. Недостаток - то что потребует программирования и небольшой верстки, но зато работать будет именно так как вам надо.

#7 Riddick

    Активный участник

  • Пользователи
  • PipPipPip
  • 70 сообщений

Отправлено 27 Май 2014 - 10:54

Просмотр сообщенияCbCoder (27 Май 2014 - 09:26) писал:

Что вы подразумеваете под динамическими фильтрами, не совсем понял? В чем разница с существующими фильтрами?
Разница в том, что в фильтрах задаются постоянные значения полей, а нужно, чтобы пользователь эти значения вводил каждый раз сам, как при поиске. Это и есть динамический фильтр. Например:
`Рейс` in (select рейс from ЦЕНЫ where Откуда = $value1 and Куда = $value2)

#8 Riddick

    Активный участник

  • Пользователи
  • PipPipPip
  • 70 сообщений

Отправлено 27 Май 2014 - 10:56

Что касается отдельной формы поиска через представление, я тоже думал в этом направлении, но мне не хватает материалов для освоения этого дела. Не поделитесь ссылками на примеры? А то в документации довольно скудно об этом написано.

#9 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 27 Май 2014 - 14:03

Просмотр сообщенияRiddick (27 Май 2014 - 10:54) писал:

Разница в том, что в фильтрах задаются постоянные значения полей, а нужно, чтобы пользователь эти значения вводил каждый раз сам, как при поиске. Это и есть динамический фильтр. Например:
`Рейс` in (select рейс from ЦЕНЫ where Откуда = $value1 and Куда = $value2)

Подумаем над этим. Тут загвоздка в том, что это актуально только в случае подобных вложенных (или иных нетривиальных) запросов, а они все таки делаются достаточно редко в КБ, в том числе и потому что требуют знаний SQL (тогда как простой запрос может кто угодно мастером собрать), а в случае простого запроса эти переменные не нужны - для этого есть стандартный поиск. Но сама мысль интересная.


Просмотр сообщенияRiddick (27 Май 2014 - 10:56) писал:

Что касается отдельной формы поиска через представление, я тоже думал в этом направлении, но мне не хватает материалов для освоения этого дела. Не поделитесь ссылками на примеры? А то в документации довольно скудно об этом написано.

Примеры есть в отчетах стандартной конфигурации. В целом же в документации информация исчерпывающая, т.к. суть представления - просто ваш свободный код. Если же загвоздка в запросах к БД - информации полно на форуме по ним. Можно также здесь почитать.

#10 Riddick

    Активный участник

  • Пользователи
  • PipPipPip
  • 70 сообщений

Отправлено 05 Июль 2014 - 13:50

Вот в версии 2.0.2 сделали как раз то, о чем я тут писал, поиск по подтаблицам. Для начала вполне неплохо, но на перспективу этот поиск можно сделать не только по подтаблицам, но и по остальным таблицам. Это будет тот случай, когда мы джойним несколько таблиц, задаем условия выборки и выводим нужные поля. Правда в этом случае поля будут одни и те же, т.е. той таблицы, в которой осуществляем поиск.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных