Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 24.01.2012
Сообщений: 5

Выборка данных с условием.

12.05.2012, 23:09. Показов 1403. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, вечер.
Подскажите, пожалуйста, как сделать выборку. Запутался в "Запрос3", не получается, выводит ерунду. Файл базы в формате MS Access 2003 и файл MS Excel 2003 с примером, что нужно получить в запросе, прикрепил.
Вложения
Тип файла: zip db_пример.zip (15.8 Кб, 26 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.05.2012, 23:09
Ответы с готовыми решениями:

Выборка данных с условием
Прошу помощи. Есть база данных с должностями в больницах, должности к примеру выглядят так: 1. главврач 2. главный режчик...

Выборка из базы полей с условием
Суть такова: есть база волонтеров.Каждый из них выбрал несколько направлений деятельности Есть форма для отправки писем. необходимо...

Добавление данных с условием
Приветствую, подскажите пожалуйста. Пытался юзать поиск, положительных результатов не нашел. Имеется таблица: 1. Наименование (ключевое...

3
3544 / 1118 / 94
Регистрация: 13.03.2011
Сообщений: 1,513
13.05.2012, 06:49
Как сделать выборку в Access Запрос3 с результатами как в столбце DCO?
Пробуйте так
T-SQL
1
2
3
SELECT  t0.*, t1.C-t3.O As DCO
FROM (t0 LEFT JOIN t0 As t1 ON DateDiff("n",t1.[D]+t1.[T],t0.[D]+t0.[T])=1)
     LEFT JOIN t0 As t3 ON DateDiff("n",t3.[D]+t3.[T],t0.[D]+t0.[T])=3
1
0 / 0 / 0
Регистрация: 24.01.2012
Сообщений: 5
13.05.2012, 16:37  [ТС]
Спасибо, получилось.

Добавлено через 2 часа 53 минуты
Добрый день. Можно еще вопрос в продолжение?
Не получилось самому перевести запрос (в базе это Запрос1) в VB, т.к. Запрос1 с большим объемом данных (с виртуальными таблицами t1 и t2) работает очень медленно. Как перевести код из "табличного запроса" в "запрос с Recordset"?
Код запроса с таблицами:
T-SQL
1
2
3
4
5
6
7
8
SELECT t1.D+t1.T AS DT, t1.O, t1.H, t1.L, t1.C, t1.V, Max(t2.H) AS [Максимум H], Min(t2.L) AS [Минимум L], Sum(t2.V) AS [Сумма V] INTO t3
FROM t0 AS t1, t0 AS t2
WHERE ((([t2].[D]+[t2].[T]) In (SELECT TOP 3 t0.D+t0.T
FROM t0
WHERE (t0.D+t0.T>=t1.D+t1.T)
ORDER BY t0.D+t0.T ASC)))
GROUP BY t1.D+t1.T, t1.O, t1.H, t1.L, t1.C, t1.V
ORDER BY t1.D+t1.T;
Вот, что получилось у меня с Recordset в VB.
"Вопросы по ходу", написал в теле кода:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
' Обработка по Кнопки4
Private Sub Кнопка4_Click()
Dim DB As DAO.Database, RS As DAO.Recordset, RQ As DAO.Recordset, RSQ As DAO.Recordset
Dim Tabl As TableDef
Dim Fil As Field
Dim s$, sq$
  DoCmd.Hourglass True
  
  ' Как сделать проверку для таблицы t3, есть она в базе или нет?
  ' Если есть, то очищаем, если нет - создаем.
 
  ' Создаем таблицу t3
  Set DB = CurrentDb
  Set Tabl = DB.CreateTableDef("t3")
  ' Создаем поля в таблице t3
  Set Fil = Tabl.CreateField("DT", dbDate)
  Tabl.Fields.Append Fil
  Set Fil = Tabl.CreateField("O", dbDouble)
  Tabl.Fields.Append Fil
  Set Fil = Tabl.CreateField("H", dbDouble)
  Tabl.Fields.Append Fil
  Set Fil = Tabl.CreateField("L", dbDouble)
  Tabl.Fields.Append Fil
  Set Fil = Tabl.CreateField("C", dbDouble)
  Tabl.Fields.Append Fil
  Set Fil = Tabl.CreateField("V", dbInteger)
  Tabl.Fields.Append Fil
  'Добавляем объект таблицу t3 к семейству таблиц
  DB.TableDefs.Append Tabl
 
  ' Удаляем записи в таблице t3
  DB.Execute ("DELETE * FROM t3")
  
  s = "SELECT D+T AS DT, O, H, L, C, V FROM t0"
  Set RS = DB.OpenRecordset(s, dbOpenSnapshot)
  Set RQ = DB.OpenRecordset(s, dbOpenSnapshot)
  
  sq = "SELECT RS!DT, RS!O, RS!H, RS!L, RS!C, RS!V" & _
  "Max(RQ!H) AS [Максимум H], Min(RQ!L) AS [Минимум L], Sum(RQ!V) AS [Сумма V] FROM RS, RQ" & _
         "WHERE ( (RQ!DT In (SELECT TOP 3 [t0].[D]+[t0].[T] FROM [t0]" & _
         "WHERE ([t0].[D]+[t0].[T]>=RS!DT) ORDER BY [t0].[D]+[t0].[T] ASC)) )" & _
         "GROUP BY RS!DT, RS!O, RS!H, RS!L, RS!C, RS!V" & _
         "ORDER BY RS!DT"
  Set RSQ = DB.OpenRecordset(sq, dbOpenSnapshot)
  
  DB.Execute (" INSERT INTO t3 SELECT " & RSQ!DT & " AS DT ")
  ' Тут не понятно, как вывести все столбцы из RSQ в таблицу t3
  ' или их все перечислять явно нужно?
  
  RSQ.MoveNext
  RSQ.Close: RQ.Close: RS.Close
  Set RSQ = Nothing: Set RQ = Nothing: Set RS = Nothing: Set DB = Nothing
  DoCmd.Hourglass False
End Sub
Добавлено через 4 минуты
Записей в таблице t0 порядка 100 000, а может и больше.
0
3544 / 1118 / 94
Регистрация: 13.03.2011
Сообщений: 1,513
13.05.2012, 18:26
работает очень медленно
Попробуйте использовать такой запрос
T-SQL
1
2
3
4
5
6
SELECT t0.D+t0.T AS DT, t0.O, t0.H, t0.L, t0.C, t0.V, 
       IIF(t0.H>=t1.H And t0.H>=t2.H, t0.H, IIF(t1.H>=t2.H,t1.H,t2.H)) AS [Максимум H],
       IIF(t0.L<=t1.L And t0.L<=t2.L, t0.L, IIF(t1.L<=t2.L,t1.L,t2.L)) AS [Минимум L],
       t0.V+t1.V+t2.V AS [Сумма V]
FROM (t0 LEFT JOIN t0 As t1 ON Datediff("n",t0.D+t0.T,t1.D+t1.T)=1)
     LEFT JOIN t0 As t2 ON Datediff("n",t0.D+t0.T,t2.D+t2.T)=2
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.05.2012, 18:26
Помогаю со студенческими работами здесь

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

Кнопка с переборокой данных в таблице и условием
Помогите плиз, мне нужно для моей б/д кнопка при натажти на которую будет выдаваться оценка, вопросов всего 5. То есть мне нужен код на VBA...

Здрасти всем. Помогите плиз с условием отбора данных.
У меня есть запрос где есть поле ИМЯ. И есть две формы. Отбор данных из запроса происходит из формы (как это сделать я знаю). Но вот если...

Запрос с условием отбора данных по списку, имеющему несколько значений ACCESS
Помогите решить следующею проблему: У меня есть форма на которой реализован список с выбором нескольких значений (код счет 1):...

Выборка данных
Здравствуйте. Есть таблица. название I цена I кол-во I дата I ------------------------------------ Масло I 10 I 2 I...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru