Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вычислимое поле с условиями 
:(
    Опции темы
mongoloid
Дата 14.6.2011, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 22.8.2009

Репутация: нет
Всего: 1



 Имеем таблицы:

 Objects:
   idObject,
   idTemp,

 
 Temps:
   idTemp,
   T

  A:
   idA,
   T1,
   T2,
   ValueA

  Задача: получить вычислимое поле в таблице Objects:    Objects.Q = Temps.T  * A.ValueA,   причем должно выбираться значение Temps.T при условии Temps.idTemp = Objects.idTemp, и значение ValueA из таблицы A с условием A.T1 < Temps.T < A.T2.

 Как записать выражение для такого вычисляемого поля? Спасибо.


Это сообщение отредактировал(а) mongoloid - 14.6.2011, 13:13
PM MAIL   Вверх
Akina
Дата 14.6.2011, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(mongoloid @  14.6.2011,  14:11 Найти цитируемый пост)
должно выбираться значение Temps.T при условии Temps.idTemp = Objects.idTemp

оба поля - уникальные?

Цитата(mongoloid @  14.6.2011,  14:11 Найти цитируемый пост)
значение ValueA из таблицы A с условием A.T1 < Temps.T < A.T2.

А если таковых несколько? Примечание: всякие "так не может быть" - это детский лепет, ибо структура это допускает.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
mongoloid
Дата 14.6.2011, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 22.8.2009

Репутация: нет
Всего: 1



 Вот уж не подумал, что могут возникнуть вопросы по структуре таблиц... Тогда так: уникальные поля (первичные ключи): Objects.idObject, Temps.idTemp, A.idA. Внешний ключ - Objects.idTemp, связь "один-ко-многим"
 Что касается того, что "А если таковых несколько?", то такое может быть при такой структуре таблицы, поэтому "по-детски лепетать" не стану по этому пункту. В действительности структура таблиц несколько сложней, и при настоящей структуре такое невозможно smile Здесь же предлагаю ограничиться тем, что при вводе гарантируется уникальность диапазонов. Выглядят они примерно так: (0, 100) (100, 200) (200, 10000)...
 И описание того, как "должно быть": пользователь выбрал некое idT, после чего автоматически должно вычисляться поле Q=T*A, где А должно выбираться при условии Т1<T<T2.

Это сообщение отредактировал(а) mongoloid - 14.6.2011, 13:55
PM MAIL   Вверх
Akina
Дата 14.6.2011, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Да пжалста...

Код

select
  (Temps.T * A.ValueA) as Q
from
  Objects,
  Temps,
  A
where 
(
  Temps.idTemp = Objects.idTemp
)
and 
(
  (
    A.T1 < Temps.T
  ) 
  and 
  (
    Temps.T < A.T2
  )
);


PS. Строгое равенство не позволяет использовать between..and
PPS. Возможные грабли - за Ваш счёт.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
mongoloid
Дата 14.6.2011, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 22.8.2009

Репутация: нет
Всего: 1



 (Негромко, со стеснением...) А как бы теперь этот запрос прикрутить в Access?.. (Пытаюсь в конструкторе запросов - пока не выходит)
PM MAIL   Вверх
Akina
Дата 14.6.2011, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



 smile 

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  1.PNG 9,58 Kb


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
mongoloid
Дата 14.6.2011, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 22.8.2009

Репутация: нет
Всего: 1



Вроде бы получилось. Работает не совсем так, как хотелось бы, зато считает исправно  smile . Сделал так: в конструкторе запросов создал новый запрос, подключил все свои таблицы. Затем в первой колонке в строке "Поле" забил выражение Q: [Temps].[T]*[A].[ValueA]
 В первой же колонке в строке "условие отбора" ввел выражение 
Код

(
  Temps.idTemp = Objects.idTemp
)
and 
(
  (
    A.T1 < Temps.T
  ) 
  and 
  (
    Temps.T < A.T2
  )
 , указанное Akina, с поправками на синтаксис Access (т.е. названия таблиц и полей в виде [Table].[Filed]).
 Akina, спасибо!

Добавлено @ 14:55
 Пока расписывал свою благодарность, Akina прислал рисунок, на котором сделано "как следует". Спасибо! Правда, у меня получилось немного по-другому, но тоже работает smile

Это сообщение отредактировал(а) mongoloid - 14.6.2011, 14:59

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  2.png 8,99 Kb
PM MAIL   Вверх
Akina
Дата 14.6.2011, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(mongoloid @  14.6.2011,  15:52 Найти цитируемый пост)
Правда, у меня получилось немного по-другому, но тоже работает 

Абсолютно одно и то же.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.1057 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.