Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/29: Рейтинг темы: голосов - 29, средняя оценка - 4.72
21 / 6 / 0
Регистрация: 10.09.2012
Сообщений: 115

SQL запрос через ADOQuery из нескольких таблиц

26.05.2013, 22:27. Показов 5581. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! В общем, проблема такая.. Нужно мне составить отчет, который содержит данные из нескольких таблиц. С этим проблем нет, практикую.) Но, дело в том, что данные объединяются из связанных таблиц. Объясню на примере, что мне надо. Например, хочу я вывести сотрудника, приказ о его приеме и приказ о его увольнении. Данные о приказах находятся в таблице Приказы, и приказов на одного сотрудника может быть несколько, не меньше 2х. Так вот когда запрос выполнится, в таблице отобразится от 2х, а то и более строк с этим сотрудником, т.к. данных в связанных таблицах о нем больше, чем 1. При этом есть еще таблицы об образовании, в которых так же может быть больше одной записи о данном сотруднике, желательно выбирать последнюю. Ну никак не могу!Помогите, пожалуйста...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.05.2013, 22:27
Ответы с готовыми решениями:

Связь таблиц через ADOQuery
Ребята помогите связать таблице через ADOQuery через ключевой столбец в С++ Builder! Я хочу научиться создавать БД ! со связью уже мучаюсь...

ADOQuery (SQL запрос) c++ builder 6
Добрый вечер, подскажите в чём ошибка SQL запрос должен переименовать столбец из Flat в House: ADOQuery1->Close(); ...

Сложный SQL запрос для ADOQuery
Возможно ли в зависимости от значения некоторых полей выводить соответствующий результат?? т.е. я ищу что-то вроде if один where не...

4
480 / 393 / 113
Регистрация: 24.04.2012
Сообщений: 1,632
Записей в блоге: 3
27.05.2013, 04:35
SQL
1
2
3
4
SELECT * FROM sotrud
LEFT JOIN prikaz ON ... (связь по сотруднику)
LEFT JOIN prikaz AS prikaz2 ON ... (связь по сотруднику)
LEFT JOIN (SELECT * FROM obrazovanie WHERE ...(связь по сотруднику) ROWS 1 (FIRST 1/ LIMIT 1 см. док-и по базе)) AS obrazovanie
2
21 / 6 / 0
Регистрация: 10.09.2012
Сообщений: 115
27.05.2013, 22:46  [ТС]
Спасибо!Обязательно попробую и отпишусь. Вот,кстати,наткнулась я на LIMIT, аксесс не распознает или что))попробую First)

Добавлено через 36 минут
C++
1
2
3
4
5
ADOQuery1->SQL->Add("Select ObSved.ФИО,(Select Prikaz.Должность from Prikaz where Prikaz.Код=ObSved.Код and (Prikaz.Должность like '""%реподаватель%""' or Prikaz.Должность like '""%читель%""')First)as Должность,ObSved.Дата_рождения,(Select Prikaz.Условия from Prikaz where Prikaz.Код=ObSved.Код and Prikaz.Вид='Принят' or Prikaz.Вид='Перевод' First)as Условия,");
ADOQuery1->SQL->Add("(Select Educ.Образование from Educ where Educ.Код=ObSved.Код First)as Образование,(Select Educ.Специальность from Educ where Educ.Код=ObSved.Код First)as Специальность,(Select Educ.Дата_окончания from Educ where Educ.Код=ObSved.Код First)as Дата_окончания,ObSved.Звание,ObSved.Ученая_степень,");
ADOQuery1->SQL->Add("ObSved.Разряд,ObSved.Категория,Stazh.Общий_стаж,Stazh.Стаж_по_спец,Stazh.Педагогич_стаж");
ADOQuery1->SQL->Add(" from ObSved,Prikaz,Educ,Stazh");
ADOQuery1->SQL->Add("where Stazh.Код=ObSved.Код and ObSved.Статус like 'Сотрудник' order by ObSved.ФИО ");
Когда пишу First- пишет "ошибка синтаксиса", когда пишу Rows-пишет "неопознанная ошибка"(

Добавлено через 11 минут
C++
1
2
3
4
ADOQuery1->SQL->Add("Select ObSved.ФИО,ObSved.Дата_рождения,ObSved.Звание,ObSved.Ученая_степень,ObSved.Разряд,ObSved.Категория from ObSved where Статус like 'Сотрудник'");
ADOQuery1->SQL->Add("Left join Prikaz on ObSved.Код");
ADOQuery1->SQL->Add("Left join Prikaz as Prikaz2 on ObSved.Код");
ADOQuery1->SQL->Add(" Left join (select * from Educ where ObSved.Код=Educ.Код)ROWS 1)AS Education ");
Неопознанная ошибка...
0
480 / 393 / 113
Регистрация: 24.04.2012
Сообщений: 1,632
Записей в блоге: 3
28.05.2013, 05:00
limit в access ставиться после select (на сколько я помню). посмотри доки, справку.
1
21 / 6 / 0
Регистрация: 10.09.2012
Сообщений: 115
28.05.2013, 19:48  [ТС]
Урааа!!! Я сделала!!! Вот код, наверняка кому-то поможет)

C++
1
2
3
4
ADOQuery1->SQL->Add("Select ObSved.ФИО,ObSved.Дата_рождения,ObSved.Звание,ObSved.Ученая_степень,ObSved.Разряд,ObSved.Категория,");
ADOQuery1->SQL->Add("(select Prikaz.Должность from Prikaz where Prikaz.Код=ObSved.Код and Prikaz.Номер_док=(select max(Prikaz.Номер_док) from Prikaz where Prikaz.Код=ObSved.Код))as Должность, (select Prikaz.Условия from Prikaz where Prikaz.Код=ObSved.Код and Prikaz.Номер_док=(select max(Prikaz.Номер_док) from Prikaz where Prikaz.Код=ObSved.Код))as Условия,");
ADOQuery1->SQL->Add("(select Educ.Образование from Educ where Educ.Код=ObSved.Код and Educ.Дата_окончания=(select max(Educ.Дата_окончания)from Educ where Educ.Код=ObSved.Код))as Образование, (select Educ.Специальность from Educ where Educ.Код=ObSved.Код and Educ.Дата_окончания=(select max(Educ.Дата_окончания) from Educ where Educ.Код=ObSved.Код))as Специальность,(select Educ.Дата_окончания from Educ where Educ.Код=ObSved.Код and Educ.Дата_окончания=(select max(Educ.Дата_окончания) from Educ where Educ.Код=ObSved.Код))as Дата_окончания");
ADOQuery1->SQL->Add(" from ObSved order by ObSved.ФИО");
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.05.2013, 19:48
Помогаю со студенческими работами здесь

Как сделать запрос? SQL для ADOQuery
Есть таблица TakeOutKind, а в ней поля: Code (длинное целое), TakeOutKind (memo), TakeOut (денежное), Limint (денежное) и TakeOutFactor...

Не работает запрос через ADOQuery
Всем доброго времени суток. И так у меня есть таблица clients ID fio tel startdate enddate clients_type 1 Иванов Иван...

Как сделать запрос, конкатенирующий число с полем memo? SQL для ADOQuery
Есть таблица TakeOutKind, а в ней поля: Code (длинное целое), TakeOutKind (memo), TakeOut (денежное), Limint (денежное) и TakeOutFactor...

Запрос ADOQuery внутри другого ADOQuery реален?
Помогите сформировать запрос для двух ADOQuery. Есть 2 таблицы БД mssql: sotrudniki , table_hlp(Вспомогательная таблица для делания...

SQL запрос всех таблиц
Всем привет! Прощу помощи в моей проблеме: Я пытаюсь вывести 3 таблицы вместе в один DBGird1 и все выводит, но он несколько раз...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru