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


фильтр исключить существующие


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

#1 mak

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

  • Активный пользователь
  • PipPipPip
  • 207 сообщений

Отправлено 16 Июль 2015 - 16:48

таблица "клиенты", у нее подтаблица "проекты" в которой поле "проект" как связь с таблицей "проекты справочник".

при добавлении требуется показывать только те записи из справочника проектов, которых еще нет в этой подтаблице.
как сделать?

предполагаю надо сделать фильтр "эксперт": запрос на исключение записей подтаблицы из справочника. верно?
`Проект` NOT IN (1, 3, 9, 15.... ) //перечисляем id уже присутствующих проектов из справочника
но как получить эти id?

кстати в подтаблице "проекты" у поля "проект" стоит "Запрещать дублирование значений", но не срабатывает.
в подтаблице это не проверяется?

#2 maksn

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

  • Пользователи
  • PipPipPip
  • 314 сообщений
  • Пол:Мужчина

Отправлено 17 Июль 2015 - 08:32

Просмотр сообщенияmak (16 Июль 2015 - 16:48) писал:

предполагаю надо сделать фильтр "эксперт": запрос на исключение записей подтаблицы из справочника. верно?
`Проект` NOT IN (1, 3, 9, 15.... ) //перечисляем id уже присутствующих проектов из справочника
но как получить эти id?

Фильтр на какую таблицу хотите поставить? На справочник?
Тогда

`id` NOT IN (SELECT `Проект` FROM `проекты` WHERE `status` = 0)

Сообщение отредактировал maksn: 17 Июль 2015 - 08:46

"...Сижу, паяю. CRM починяю..."
Мои разработки

#3 mak

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

  • Активный пользователь
  • PipPipPip
  • 207 сообщений

Отправлено 17 Июль 2015 - 13:08

да, на справочник при добавлении записи в подтаблицу, но в рамках текущей записи таблицы,
т.е. надо исключать не все записи какие есть в подтаблице, а только относящиеся к текущей записи.

как получить в фильтре id записи? не подтаблицы а главной.

`id` NOT IN (SELECT `Проект` FROM `проекты` WHERE `status` = 0 AND 'поле связи с таблицей контрагенты' = id)


#4 mak

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

  • Активный пользователь
  • PipPipPip
  • 207 сообщений

Отправлено 20 Июль 2015 - 16:45

фильтр не работает.
пробовал разными способами

так работает, строки с такими id не появляются:
`id` NOT IN (1,2,3)

так не работает - поле вообще не раскрывается для выбора:
`id` NOT IN (SELECT `f4450` FROM DATA_TABLE290 WHERE `f4530` = 3)

3 - это id одной из записей, для теста.
запрос "SELECT `f4450` FROM DATA_TABLE290 WHERE `f4530` = 3" в phpMyAdmin выдает 2 строки со значениями 2 и 0.
что я делаю не верно?

#5 mak

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

  • Активный пользователь
  • PipPipPip
  • 207 сообщений

Отправлено 20 Июль 2015 - 17:19

запрос такого вида работает:
`ID` NOT IN (SELECT `f4450` as `ID` FROM DATA_TABLE290 WHERE `f4530` = '3')

заработало после назначения столбцу "f4450" имени, т.е. => `f4450` as `ID`

остался вопрос, как в фильтре обратится к полю главной таблицы или подтаблицы,
т.е. структура - таблица -> подтаблица -> связь со справочником (фильтр)

в фильтре надо знать id текущей записи "таблицы" - как?

#6 CbCoder

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

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

Отправлено 23 Июль 2015 - 16:49

Боюсь что никак, т.к. это переменное значение, зависящее от текущей открытой страницы, а имеющиеся фильтры представляют из себя статичные выражения без использования переменных (за исключением "текущий пользователь").





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

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