Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Базы данных Access: Сформировать запрос  [new]
Samyrro
Member

Откуда:
Сообщений: 2
Есть некая база данных студентов в Access 2016. Необходимо сформировать запрос на выборку, который отобразит всех студентов, у которых нет ни одной оценки "2". Если есть хотя бы одна двойка - студента в результатах запроса в принципе не должно быть. Как это сделать? Помогите!!!

К сообщению приложен файл. Размер - 104Kb
17 мар 19, 20:58    [21835399]     Ответить | Цитировать Сообщить модератору
 Re: Базы данных Access: Сформировать запрос  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 18935
SELECT список полей
FROM таблица
WHERE студент NOT IN (SELECT студент
                      FROM таблица 
                      WHERE оценка = 2)
17 мар 19, 21:12    [21835408]     Ответить | Цитировать Сообщить модератору
 Re: Базы данных Access: Сформировать запрос  [new]
Samyrro
Member

Откуда:
Сообщений: 2
спасибо, то что надо!!!
17 мар 19, 23:55    [21835478]     Ответить | Цитировать Сообщить модератору
 Re: Базы данных Access: Сформировать запрос  [new]
Медет
Member

Откуда:
Сообщений: 9
Доброго времени суток!

Не могу решить одну простую задачу! Возможно с Вашей помощью решу!
В условии запроса использовано поле формы. В русской системе виндоус и в русском оффисе работает и проблем нет, но в ангийском виндоус и английском оффисе возникает проблема - всплывает окно с требованием введение параметра и при этом наименование ошибки начинается с Формы!...., хотя в условии запроса синтаксис заложен через Forms!...
Не пойму в чем ошибка и как от нее избавиться

К сообщению приложен файл. Размер - 157Kb
29 май 19, 20:17    [21897177]     Ответить | Цитировать Сообщить модератору
 Re: Базы данных Access: Сформировать запрос  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4258
Медет, использовать не локализованную версию или делать функции которые будут возвращать значения контролов.
30 май 19, 03:54    [21897352]     Ответить | Цитировать Сообщить модератору
 Re: Базы данных Access: Сформировать запрос  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4258
+ не использовать пробелов в наименованиях.
30 май 19, 03:55    [21897353]     Ответить | Цитировать Сообщить модератору
 Re: Базы данных Access: Сформировать запрос  [new]
982183
Member

Откуда: VL
Сообщений: 2913
Akina
SELECT список полей
FROM таблица
WHERE студент NOT IN (SELECT студент
                      FROM таблица 
                      WHERE оценка = 2)

Ну так получим все оценки не равные 2
А сгруппировать?

SELECT список полей
FROM таблица
GROUP BY студент
HAVING MIN(ОЦЕНКА)<> 2
30 май 19, 04:08    [21897354]     Ответить | Цитировать Сообщить модератору
 Re: Базы данных Access: Сформировать запрос  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4258
Медет, а почему ты пишешь в чужие топики?
30 май 19, 05:37    [21897359]     Ответить | Цитировать Сообщить модератору
 Re: Базы данных Access: Сформировать запрос  [new]
982183
Member

Откуда: VL
Сообщений: 2913
Это если у него одна таблица, где и фио и оценки.
Но скорее всего таблиц две.

SELECT список полей
FROM таблицастудентов
WHERE студент NOT IN (SELECT студент
                      FROM таблицаоценок 
                      WHERE оценка = 2)


SELECT список полей
FROM таблицастудентов, таблица оценок
WHERE таблицастудентов.студент = таблицаоценок.студент
GROUP BY студент
HAVING MIN(ОЦЕНКА)<> 2
30 май 19, 06:00    [21897360]     Ответить | Цитировать Сообщить модератору
 Re: Базы данных Access: Сформировать запрос  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4258
982183, на дату стартового поста посмотри

уже всё перетёрли
30 май 19, 06:33    [21897365]     Ответить | Цитировать Сообщить модератору
 Re: Базы данных Access: Сформировать запрос  [new]
Медет
Member

Откуда:
Сообщений: 9
Панург
Медет, а почему ты пишешь в чужие топики?


Не хотел плодить подобных тем.
Я тут новенький! Необходимо создавать свои темы?
Локализованная версия - это значит английская установка?
За подсказку спасибо!
30 май 19, 06:55    [21897370]     Ответить | Цитировать Сообщить модератору
 Re: Базы данных Access: Сформировать запрос  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4258
Медет
Не хотел плодить подобных тем.
В каком месте он подобный?
Медет
Я тут новенький! Необходимо создавать свои темы?
Правила прочитай и ознакомься с рекомендациями подфорума
30 май 19, 07:01    [21897372]     Ответить | Цитировать Сообщить модератору
 Re: Базы данных Access: Сформировать запрос  [new]
982183
Member

Откуда: VL
Сообщений: 2913
Панург
982183, на дату стартового поста посмотри
уже всё перетёрли

Согласен.
Но тут чистая теория.
Сейчас придет Akina и констатирует какой я балбес.
тут есть два подхода к стандартной ситуации.
Осталось понять боле рациональный
30 май 19, 07:26    [21897378]     Ответить | Цитировать Сообщить модератору
 Re: Базы данных Access: Сформировать запрос  [new]
982183
Member

Откуда: VL
Сообщений: 2913
SELECT список полей
FROM таблицастудентов
WHERE студент IN (SELECT студент
                  FROM таблицаоценок 
                  group by студент
                  having min(оценка) <>2)
30 май 19, 07:44    [21897387]     Ответить | Цитировать Сообщить модератору
 Re: Базы данных Access: Сформировать запрос  [new]
982183
Member

Откуда: VL
Сообщений: 2913
Вариант3
30 май 19, 07:45    [21897389]     Ответить | Цитировать Сообщить модератору
 Re: Базы данных Access: Сформировать запрос  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4258
982183, а что тут теоретического? В первом случае (21897360) запрос обновляемый, во втором нет. Нужна скорость? Джойн будет быстрее при прочих равных, с подчинённым запросом самый медленный. Запрос с группировкой, ИМХО, вообще за гранью...
30 май 19, 07:46    [21897390]     Ответить | Цитировать Сообщить модератору
 Re: Базы данных Access: Сформировать запрос  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4258
982183
Вариант3
см предыдущий ответ
30 май 19, 07:47    [21897392]     Ответить | Цитировать Сообщить модератору
 Re: Базы данных Access: Сформировать запрос  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 18935
982183
так получим все оценки не равные 2
Здрасьте, приехали... посмотри внимательнее.
982183
А сгруппировать?

SELECT список полей
FROM таблица
GROUP BY студент
HAVING MIN(ОЦЕНКА)<> 2
Ага. В Аксессе. Неполная группировка. Щазз!
К тому же, допускай Акс такое, если у студента есть единица - он будет выведен вне зависимости от наличия двойки.
30 май 19, 08:31    [21897414]     Ответить | Цитировать Сообщить модератору
 Re: Базы данных Access: Сформировать запрос  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
или такое выражение: sum(iif(оценка=2;1;0)) и отбор по этому полю=0-студенты у которых нет двоек
30 май 19, 12:29    [21897611]     Ответить | Цитировать Сообщить модератору
 Re: Базы данных Access: Сформировать запрос  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902


К сообщению приложен файл (tmp.rar - 21Kb) cкачать
30 май 19, 12:57    [21897637]     Ответить | Цитировать Сообщить модератору
 Re: Базы данных Access: Сформировать запрос  [new]
982183
Member

Откуда: VL
Сообщений: 2913
Akina
Здрасьте, приехали... посмотри внимательнее.

далее я подкорректировал оба варианта
21897360

двойка/единица тут вопрос не принципиальный вместо <> ставим >

(Всю жизнь работал с инструментом, где нет "IN" каждый раз как вижу - принять не могу)

sdku - HAVING всё равно делать надо.
а зачем выносить поле для фильтрации в select?

WHERE / JOIN тут не принцииально
30 май 19, 13:27    [21897664]     Ответить | Цитировать Сообщить модератору
 Re: Базы данных Access: Сформировать запрос  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
982183
sdku - HAVING всё равно делать надо.
SELECT учащиеся.учащийся, Sum(IIf([оценка]=2,1,0)) AS скДвоек
FROM учащиеся INNER JOIN (предметы INNER JOIN успеваемость ON предметы.КодП = успеваемость.предмет) ON учащиеся.КодУ = успеваемость.учащийся
GROUP BY учащиеся.учащийся;
Стесняюсь спросить:а хде здесь HAVING?
и чем Вас не устраивает группировка?
982183
а зачем выносить поле для фильтрации в select?
а куда? (ведь это выражение,а не условие отбора)
30 май 19, 13:56    [21897696]     Ответить | Цитировать Сообщить модератору
 Re: Базы данных Access: Сформировать запрос  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4258
982183
Всю жизнь работал с инструментом, где нет "IN" каждый раз как вижу - принять не могу
Используй =Any
30 май 19, 16:42    [21897853]     Ответить | Цитировать Сообщить модератору
 Re: Базы данных Access: Сформировать запрос  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4258
sdku
-Sum([оценка]=2) AS скДвоек 
и так хватит
30 май 19, 16:47    [21897859]     Ответить | Цитировать Сообщить модератору
 Re: Базы данных Access: Сформировать запрос  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5902
Панург
....и так хватит
Вполне
30 май 19, 17:47    [21897918]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить