powered by simpleCommunicator - 2.0.27     © 2024 Programmizd 02
Map
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос с выборкой уникальных значей в заданный промежуток времени
20 сообщений из 20, страница 1 из 1
Запрос с выборкой уникальных значей в заданный промежуток времени
    #40131268
Nick_12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть несколько связанных таблиц (см. схему таблиц). И необходимо сделать запрос типа "Сколько художников XVIII века (дата рождения которых попадает на этот период) представлено в каждом музее, и каким количеством картин?" На данный момент запрос имеет вид
SELECT Музеи.НАЗВАНИЕ, Count(IIf(#12/31/1800#>=[Художники]![ДАТА РОЖДЕНИЯ],IIf(#1/1/1701#<=[Художники]![ДАТА РОЖДЕНИЯ],1,Null),Null)) AS [Количество картин художников 18 века], Count(Картины.[КОД ХУДОЖНИКА]) AS [Count-КОД ХУДОЖНИКА]
FROM Художники INNER JOIN (Музеи INNER JOIN Картины ON Музеи.[КОД МУЗЕЯ] = Картины.[КОД МУЗЕЯ]) ON Художники.[КОД ХУДОЖНИКА] = Картины.[КОД ХУДОЖНИКА]
GROUP BY Музеи.НАЗВАНИЕ
HAVING (((Count(IIf(#12/31/1800#>=[Художники]![ДАТА РОЖДЕНИЯ],IIf(#1/1/1701#<=[Художники]![ДАТА РОЖДЕНИЯ],1,Null),Null)))>0));
Но во первых он считает все записи относящиеся к художникам 18 века из таблицы "картины" "код художника" (должен считать только уникальные т.к. список имеет вид:
2015
2015
2014
2013
2015)
И во вторых считает все картины представленные в музее (а должен считать только картины написаннные художниками 18 века)
Я уже запарился подбирать разные варианты подсчета, тут либо все проще чем я думаю, либо сложнее
...
Рейтинг: 0 / 0
Запрос с выборкой уникальных значей в заданный промежуток времени
    #40131269
Nick_12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В таблице картины записи представлены так:
...
Рейтинг: 0 / 0
Запрос с выборкой уникальных значей в заданный промежуток времени
    #40131270
Nick_12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сам запрос в конструкторе сейчас выглядит так:
Количество картин художников 18 века: Count(IIf(#31.12.1800#>=[Художники]![ДАТА РОЖДЕНИЯ];IIf(#01.01.1701#<=[Художники]![ДАТА РОЖДЕНИЯ];1;Null);Null))
И условие отбора в 3 поле:
(Count(IIf(#31.12.1800#>=[Художники]![ДАТА РОЖДЕНИЯ];IIf(#01.01.1701#<=[Художники]![ДАТА РОЖДЕНИЯ];1;Null);Null)))>0
...
Рейтинг: 0 / 0
Запрос с выборкой уникальных значей в заданный промежуток времени
    #40131296
Swa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nick_12,

Почитайте про Distinct

Уважайте других и код оформляйте в тег SRC

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select 
  Музеи.НАЗВАНИЕ,
  count(*) [Количество картин художников 18 века],
  count(distinct Картины.[КОД ХУДОЖНИКА]) [Количество художников 18 века]
from
 (
  Художники 
  inner join Картины on Художники.[КОД ХУДОЖНИКА] = Картины.[КОД ХУДОЖНИКА]
 )
 inner join Музеи on Музеи.[КОД МУЗЕЯ] = Картины.[КОД МУЗЕЯ]  
where 
  [Художники]![ДАТА РОЖДЕНИЯ] between #1/1/1701# and #12/31/1800#
gtoup by Музеи.НАЗВАНИЕ, Музеи.[КОД МУЗЕЯ]

...
Рейтинг: 0 / 0
Запрос с выборкой уникальных значей в заданный промежуток времени
    #40131299
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nick_12,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT Музеи.Название, Count([КОД ХУДОЖНИКА]) AS Художники, Sum(КоличКартин) AS Картины
FROM
{
SELECT Музеи.Название, Музеи.[КОД ХУДОЖНИКА], Count(*) AS КоличКартин
FROM Музеи INNER JOIN (Картины INNER JOIN Художники ON Картины.[КОД ХУДОЖНИКА]=Художники.[КОД ХУДОЖНИКА]) ON Музеи.[КОД МУЗЕЯ] = Картины.[КОД МУЗЕЯ]
WHERE [Художники].[ДАТА РОЖДЕНИЯ] BETWEEN #01/01/1701# AND #12/31/1700#
GROUP BY Музеи.Название, Музеи.[КОД ХУДОЖНИКА]
)
GROUP BY Музеи.Название
...
Рейтинг: 0 / 0
Запрос с выборкой уникальных значей в заданный промежуток времени
    #40131307
Nick_12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Swa111,
Выдает ошибку как на скрине.
А на счет кода не знал, инзвините). Только зарегался зашел в самую подходящую по моему мнению тему, да и в сам access только сегодня начал вникать и застопорился на этом.
...
Рейтинг: 0 / 0
Запрос с выборкой уникальных значей в заданный промежуток времени
    #40131308
Nick_12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Swa111,
Да и в коды пока не вникал почти все запросы строил в конструкторе с помощью заданных функций, пробовал разобраться но оно выдает код сплошными строчками я просто теряюсь в этих буквах и постоянно сбиваюсь. В итоге так и строю при помощи конструктора
...
Рейтинг: 0 / 0
Запрос с выборкой уникальных значей в заданный промежуток времени
    #40131333
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nick_12
...."Сколько художников XVIII века (дата рождения которых попадает на этот период)...
Стесняюсь спросить: а на какой такой "ЭТОТ"
Да и вообще сложно все как-то....
Гляньте это (чего я не понял в Вашей "хотелке"):
...
Рейтинг: 0 / 0
Запрос с выборкой уникальных значей в заданный промежуток времени
    #40131385
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И ни гу-гу...

Nick_12 ,

Смотрели запрос 22429188 ?
...
Рейтинг: 0 / 0
Запрос с выборкой уникальных значей в заданный промежуток времени
    #40131391
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да тут у ТС другая проблема-родились два художника в 1775 году,один из них в 20 лет стал известен(придворный художник написавший к 1800 году 10..20 картин) а второй стал известен к 45 годам... Так кто из них художник 17 века, а кто 18? Опираться на дату рождения, в данном случае, не ICE.
Опять же если "хотелка" правильно мною понята
...
Рейтинг: 0 / 0
Запрос с выборкой уникальных значей в заданный промежуток времени
    #40131399
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nick_12,

У меня в запросе описка.
Нужно так
Код: sql
1.
WHERE [Художники].[ДАТА РОЖДЕНИЯ] BETWEEN #01/01/1701# AND #12/31/1799#


sdku ,

18-й век - это годы с 1701 по 1799.
...
Рейтинг: 0 / 0
Запрос с выборкой уникальных значей в заданный промежуток времени
    #40131405
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то я глупость написала.
Конечно, 18-й век - это годы с 1701 по 1800.
...
Рейтинг: 0 / 0
Запрос с выборкой уникальных значей в заданный промежуток времени
    #40131434
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Michelle,
Очень дискуссионно-как начало 21 века 1.1.2000 или 1.1.2001
Да и какая разница-все одно:
__Michelle
И ни гу-гу...
...
Рейтинг: 0 / 0
Запрос с выборкой уникальных значей в заданный промежуток времени
    #40131452
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
Очень дискуссионно-как начало 21 века 1.1.2000 или 1.1.2001
А что тут дискутировать? https://ru.wikipedia.org/wiki/Век Согласно григорианскому календарю, I век н. э. начался 1 января 1 года и закончился 31 декабря 100 года. II век начался в 101 году, III век — в 201 и т. д. Последний год века начинается с номера этого века (например, 2000 год — последний год XX века). Поэтому, если основываться на летосчислении по григорианскому календарю, неверно распространённое утверждение о том, что XXI век и 3-е тысячелетие начались 1 января 2000 года; на самом деле это произошло 1 января 2001 года. Кроме того, в этой системе нет «нулевого века»: после I века до н. э. начался I век н. э.
...
Рейтинг: 0 / 0
Запрос с выборкой уникальных значей в заданный промежуток времени
    #40131479
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург,
Лично я считаю точно так же, но есть упертые которые с этим не согласны и хоть "кол на голове теши"
Так же как и между 31.12.1999 и 1.1.2000 один ГОД,но при этом всего 1 ДЕНЬ
Ну не хотят люди понимать что между 1 г.до н.э и 1 г.н.э. нет "нулевого года" и что даты это не просто цифры и арифметика к ним в целом не всегда применима.(а применима только к одним и тем же компонентам-дням,месяцам,годам). Но удивляет что килограммы и метры никто не сравнивает, а разные компоненты даты во всю и каких-либо объяснений не принимают-короче упираются как бараны
...
Рейтинг: 0 / 0
Запрос с выборкой уникальных значей в заданный промежуток времени
    #40131697
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Накануне 2000 года некоторые ребята на автостоянке вслед за ЕБН говорили, что наступает 21 век.
Удалось их разубедить в этом наглядным примером.
В ящике 20 бутылок водки.
Ящик (век) заканчивается двадцатой выпитой бутылкой.
Следующий ящик (век) начинается с 21 бутылки.
Вроде убедило.
...
Рейтинг: 0 / 0
Запрос с выборкой уникальных значей в заданный промежуток времени
    #40131791
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИВП

...Вроде убедило.
Значит ребята адекватные (не идиёты-хоть и не трезвые)
...
Рейтинг: 0 / 0
Запрос с выборкой уникальных значей в заданный промежуток времени
    #40131845
Nick_12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,
Спасибо большое, все сработало=). Пришлось кое-где подправить, но это уже опечатки были. В остальном все отлично. Выборка выдает именно то что нужно.
...
Рейтинг: 0 / 0
Запрос с выборкой уникальных значей в заданный промежуток времени
    #40131846
Nick_12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,
Дату я сразу заметил и исправил=). Только была опечатка в названии таблиц и одна скобка была фигурной, если я правильно понял она должна быть круглой. В общем, опечатки исправил и все заработало как часы.
...
Рейтинг: 0 / 0
Запрос с выборкой уникальных значей в заданный промежуток времени
    #40131894
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nick_12
__Michelle,

Дату я сразу заметил и исправил=).
Только была опечатка в названии таблиц и одна скобка была фигурной, если я правильно понял она должна быть круглой.
В общем, опечатки исправил и все заработало как часы.

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

Хорошо, что сами разобрались и исправили.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос с выборкой уникальных значей в заданный промежуток времени
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]