powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / SQL фильтр
15 сообщений из 15, страница 1 из 1
SQL фильтр
    #38853660
Newseva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица сотрудники!
надо по запросу вывести сотрудников, родившихся в один год
Таблицу отображаю с ADOQuery1
Как можно это реализовать с SQL Запросом ?

Модератор: Тема перенесена из форума "C++".
...
Рейтинг: 0 / 0
SQL фильтр
    #38853665
Newseva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Newseva,

Пишу программу на С++
...
Рейтинг: 0 / 0
SQL фильтр
    #38853737
Barkan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Newseva,

Если вопрос в написании SQL запроса - то ищите мануалы по SQL, лучше сразу с описанием особенностей используемого сервера.
А так в общем случае это:
select [список полей через запятую] from [имя таблицы] where [условия отбора записей]
...
Рейтинг: 0 / 0
SQL фильтр
    #38853901
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Newseva,

Для начала надо озвучить хотя бы структуру таблиц.
...
Рейтинг: 0 / 0
SQL фильтр
    #38854064
Newseva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот запрос

ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("Select * from people WHERE DateOfBirth LIKE '"+Edit1->Text+"%' ORDER BY DateOfBirth");
ADOQuery1->Open();

Но он выводит только целиком Одинаковые дата,месяц и год ! А мне надо только все где одинаковые года?
Спасибо!
...
Рейтинг: 0 / 0
SQL фильтр
    #38854119
Barkan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Newseva,

1. Какой сервер используешь?
2. DateOfBirth - какой тип данных?

В общем надо из DateOfBirth корректно выделить год и сравнить с заданным.
Способ выделения (используемая функция) может различаться в зависимости от сервера.
...
Рейтинг: 0 / 0
SQL фильтр
    #38854162
Newseva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Barkan,

база в Microsoft Access
тип поля Дата/время
...
Рейтинг: 0 / 0
SQL фильтр
    #38854253
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Newseva,

1) Поищи в MSAccess функцию, которая может из поля DateTime извлечь только год.
Т.е. будет что-то вроде:
Select * from people
WHERE ExtractYear(DateOfBirth)=:USERYEAR
ORDER BY DateOfBirth
2) Используй параметры
3) Искать (фильтровать) числовое значение по LIKE - это из области проктостоматологии
4) Пихать в текст SQL запроса то, что понавводил пользователь без проверок - гарантированные грабли. Вот введут тебе в поле "Год" строку "год синей козы" - чего делать будешь?-)
...
Рейтинг: 0 / 0
SQL фильтр
    #38854386
WebSharper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NewsevaADOQuery1->SQL->Add("Select * from people WHERE DateOfBirth LIKE '"+Edit1->Text+"%' ORDER BY DateOfBirth");
Но он выводит только целиком Одинаковые дата,месяц и год ! А мне надо только все где одинаковые года?
Спасибо!

Код: sql
1.
Select * from people WHERE DateOfBirth Between   '"+startOfYear +" AND " +endOfYear  +" ORDER BY DateOfBirth



где startOfYear и endofYear - даты начала и конца года
...
Рейтинг: 0 / 0
SQL фильтр
    #38854388
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ох уж эти любители конкатенаций.

Не забудьте новичку рассказать про инжекции. Хотя для Акцесса может оно и пофигу.
...
Рейтинг: 0 / 0
SQL фильтр
    #38854635
Newseva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Спасибо !
...
Рейтинг: 0 / 0
SQL фильтр
    #38854714
WebSharper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНе забудьте новичку рассказать про инжекции. Хотя для Акцесса может оно и пофигу.

Новичок, прочитай про инжекции .

Теперь тебе придется переписать весь, код, потому, что если кто-то сломает базу данных, через эту дырку, то ты не сможешь, сказать, что не знал!
...
Рейтинг: 0 / 0
SQL фильтр
    #38856583
Эмоции
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WebSharperNewsevaADOQuery1->SQL->Add("Select * from people WHERE DateOfBirth LIKE '"+Edit1->Text+"%' ORDER BY DateOfBirth");
Но он выводит только целиком Одинаковые дата,месяц и год ! А мне надо только все где одинаковые года?
Спасибо!
Код: sql
1.
Select * from people WHERE DateOfBirth Between   '"+startOfYear +" AND " +endOfYear  +" ORDER BY DateOfBirth


где startOfYear и endofYear - даты начала и конца года

Или так:

Код: plaintext
1.
ADOQuery1->SQL->Add("SELECT * FROM people WHERE YEAR(DateOfBirth) = " + Edit1->Text


Некоторые могут сказать, что это не совсем "по-феншую", так как "сущность" [DateOfBirth] претерпевает преобразование, что может значительно увеличить время работы запроса. Но в случае таблиц до 10000 - 100000 строк, этим можно пренебречь. В общем, на Ваше усмотрение но, злоупотреблять этим не стоит...
...
Рейтинг: 0 / 0
SQL фильтр
    #38857330
Newseva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Эмоции,

Спасибо! именно то!!! что я хотел )
...
Рейтинг: 0 / 0
SQL фильтр
    #38859034
Newseva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Эмоции,

Может и в этом случае можете, что посоветовать?
надо вывести тоже только с одинаковыми годами !

ADOTable1->Filtered=false;
ADOTable1->Filter = "DateOfBirth= '" + Edit1->Text + "'";
ADOTable1->Filtered=true;
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / SQL фильтр
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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