powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / SQL запрос на выборку из БД Access. Где ошибка?
7 сообщений из 7, страница 1 из 1
SQL запрос на выборку из БД Access. Где ошибка?
    #39342654
flanderz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, не могу понять в чем моя ошибка. Понимаю что она простая, но не вижу ее в упор.
У меня есть таблица в БД Access, есть 3 поля pDt(Дата), pName(Текст), pSumm(Числовое). Нужно сделать выборку количества клиентов, которые посещали учреждение впервые в определенном месяце, т.е. до указанного месяца посещений не было.
Пишу:
Код: sql
1.
2.
SELECT COUNT (f.pname)
FROM patient f WHERE f.pName IN NOT (SELECT s.PName FROM patient s WHERE s.pDt <:d AND f.pname=s.pname)  AND month(f.pDt) =:m AND year(f.pDt)=:y


Где d - дата (день, месяц, год), m - месяц, y - год
Во-первых выборка происходит слишком медленно, а во-вторых думаю, что не правильно.
Спасибо за внимание.
...
Рейтинг: 0 / 0
SQL запрос на выборку из БД Access. Где ошибка?
    #39342657
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не IN NOT, а NOT IN
...
Рейтинг: 0 / 0
SQL запрос на выборку из БД Access. Где ошибка?
    #39342682
flanderz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вижу, но это описка, запрос бы не выполнился.
...
Рейтинг: 0 / 0
SQL запрос на выборку из БД Access. Где ошибка?
    #39342690
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда с медленностью можно бороться, переписав запрос на обычный JOIN, а насчёт корректности... сервер даёт ровно то, что просишь, и не виноват, что просишь не то, что хочешь.
...
Рейтинг: 0 / 0
SQL запрос на выборку из БД Access. Где ошибка?
    #39342747
Иожет так?
Код: sql
1.
SELECT COUNT (f.pname) FROM patient f HAVING MIN(f.pDt) Between DateSerial(y, m, 1) And DateSerial(y, m+1, 0)
...
Рейтинг: 0 / 0
SQL запрос на выборку из БД Access. Где ошибка?
    #39342751
flanderz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев )Иожет так?
Код: sql
1.
SELECT COUNT (f.pname) FROM patient f HAVING MIN(f.pDt) Between DateSerial(y, m, 1) And DateSerial(y, m+1, 0)


Спасибо, попробую.
вот запрос с JOIN-om
Код: sql
1.
SELECT DISTINCT f.pname FROM patient f LEFT JOIN (SELECT PName FROM patient  WHERE pDt <:d) s ON f.pname = s.pname WHERE  month(f.pDt)=10 AND year(f.pDt)=2016 AND s.pname IS NULL


Выборку делает правильно, но делаю запрос вида
Код: sql
1.
SELECT COUNT(DISTINCT f.pname) FROM patient f LEFT JOIN (SELECT PName FROM patient  WHERE pDt <:d) s ON f.pname = s.pname WHERE  month(f.pDt)=10 AND year(f.pDt)=2016 AND s.pname IS NULL


Насколько я понял, так в access DISTINCTне работает. Как тогда переписать запрос?
...
Рейтинг: 0 / 0
SQL запрос на выборку из БД Access. Где ошибка?
    #39342761
flanderz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все, ответ найден
Код: sql
1.
2.
3.
SELECT COUNT (pName) As summ FROM (SELECT DISTINCT f.pName FROM patient f LEFT JOIN
 (SELECT PName FROM patient  WHERE pDt <:d) s ON f.pname = s.pname WHERE
  month(f.pDt)=10 AND year(f.pDt)=2016 AND s.pname IS NOT NULL)


Надеюсь, что я у него теперь правильно прошу то, что мне надо.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / SQL запрос на выборку из БД Access. Где ошибка?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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