Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/64: Рейтинг темы: голосов - 64, средняя оценка - 4.58
 Аватар для camatsu1414
0 / 0 / 0
Регистрация: 11.02.2023
Сообщений: 23

Объединение таблиц с условием даты SQL

03.04.2023, 01:01. Показов 17767. Ответов 10

Студворк — интернет-сервис помощи студентам
Здравствуйте, запрос без объединения таблиц просто фильтр по дате работает, а когда нужно объединить, появляется ошибка по условию from
Вот это работает

C++
1
2
3
4
 ADOQuery1->Active=false;
 ADOQuery1->SQL->Text="Select *from Appointment where [The date]= :thedate";
 ADOQuery1->Parameters->ParamByName("thedate")->Value = StrToDate(ESearch->Text);
 ADOQuery1->Active=true;
Вот это уже нет
C++
1
2
3
4
5
6
7
8
 ADOQuery1->Active=false;
 ADOQuery1->SQL->Text="Select Appointment.ID,Clients.Surname,Services.[The Service],Staff.Surname From Appointment"
 "inner join Staff on Appointment.Staff=ID"
 "inner join Clients on Appointment.Client=ID"
 "inner join Services on Appointment.Service=ID"
 "where [the date]=:thedate";
 ADOQuery1->Parameters->ParamByName("thedate")->Value=StrToDate(ESearch->Text);
 ADOQuery1->Active=true;
Нужно, что бы по дате записи подтягивались данные о клиентах, сотрудниках и услугах. Если вопрос глупый. то извините,
SQL учу третий день только
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.04.2023, 01:01
Ответы с готовыми решениями:

Объединение таблиц с условием
Есть 2 таблицы, в каждой есть 3 поля ключей и дальше данные. Требуется объединить в одну по ключевым полям. Почему нельзя использовать...

Составить выборку из 3 таблиц с условием sql
Задание. Даны 3 таблицы. Таблица 1 - SOTR. Содержит общие данные о сотрудниках объединения: - табельный номер - ФИО -дата...

SQL, объединение 3 таблиц
Ребята, привет! Помогите разобраться с задачей. Есть 4 таблицы: student (id, first_name, last_name, age, gender, crm_id, group_id,...

10
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,354
Записей в блоге: 3
03.04.2023, 04:53
Лучший ответ Сообщение было отмечено camatsu1414 как решение

Решение

1. Возьмите себе за правило обкатывать запросы в самой СУБД до полной их работоспособности и только потом переносить текст запроса в приложение.
2. При таком вот разбиении на несколько строк, как это сделали Вы, не надо забывать про пробелы, иначе у Вас получится такая вот катавасия, как на скрине и не один движок СУБД этого не поймет
Миниатюры
Объединение таблиц с условием даты SQL  
0
 Аватар для camatsu1414
0 / 0 / 0
Регистрация: 11.02.2023
Сообщений: 23
05.04.2023, 02:10  [ТС]
я пробовала объединение таблиц Clients, Services,Staff и Appointment в Access, вторичные ключи в Appointments, объединение
2х таблиц получается, дальше ошибка синтаксиса (пропущен оператор)

SQL
1
2
3
4
SELECT Staff.[Surname stuff], Services.[The service], Clients.Surname FROM Staff 
INNER JOIN Appointment ON Staff.ID = Appointment.Staff
INNER JOIN Clients ON Clients.ID = Appointment.Client
INNER JOIN Services ON Services.ID = Appointment.Service
Добавлено через 34 минуты
так тоже не работает

SQL
1
2
3
4
SELECT Appointment.ID, Staff.[Surname stuff], Services.[The service], Clients.Surname FROM Appointment
INNER JOIN Staff ON Staff.ID = Appointment.Staff
INNER JOIN Clients ON Clients.ID = Appointment.Client
INNER JOIN Services ON Services.ID = Appointment.Service;
Добавлено через 1 минуту
проверила объединение таблиц всех по паре к Appointment, все отлично, а все вместе -ошибка

Добавлено через 6 минут
то что ID поля числовые. а не счетчики не критично?
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,354
Записей в блоге: 3
05.04.2023, 04:53
Что-то я не могу врубиться в связи Ваших таблиц. Схему данных покажите
Цитата Сообщение от camatsu1414 Посмотреть сообщение
то что ID поля числовые. а не счетчики не критично?
нет

Добавлено через 5 минут
Цитата Сообщение от camatsu1414 Посмотреть сообщение
объединение 2х таблиц получается, дальше ошибка
На ошибку в Билдере я Вам указал, что же касается ошибки самого SQL-запроса, то для помощи по созданию этих самых SQL-запросов существует целый раздел: Базы данных. Конкретно Вам, я так понимаю, нужен подраздел Access
0
 Аватар для camatsu1414
0 / 0 / 0
Регистрация: 11.02.2023
Сообщений: 23
05.04.2023, 15:16  [ТС]
спасибо, буду перепроверять. да, сначала Access
0
 Аватар для camatsu1414
0 / 0 / 0
Регистрация: 11.02.2023
Сообщений: 23
05.04.2023, 15:21  [ТС]
база данных
Миниатюры
Объединение таблиц с условием даты SQL  
0
 Аватар для camatsu1414
0 / 0 / 0
Регистрация: 11.02.2023
Сообщений: 23
05.04.2023, 16:54  [ТС]
Готово!

SQL
1
2
SELECT Clients.Surname, Services.[The service], Staff.[Surname stuff], Appointment.[The TIME], Appointment.[The DATE]
FROM Staff INNER JOIN (Services INNER JOIN (Clients INNER JOIN Appointment ON Clients.ID = Appointment.Client) ON Services.ID = Appointment.Service) ON Staff.ID = Appointment.Staff;
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,354
Записей в блоге: 3
05.04.2023, 17:19
Цитата Сообщение от camatsu1414 Посмотреть сообщение
Готово!
0
 Аватар для camatsu1414
0 / 0 / 0
Регистрация: 11.02.2023
Сообщений: 23
07.04.2023, 08:49  [ТС]
а не работает этот код в builder c++

такой вариант
C++
1
2
3
4
5
6
7
8
ADOQuery1->Active=false;
 ADOQuery1->SQL->Text= "SELECT Appointment.[The time], Clients.Surname, Services."
 "[The service], Staff.[Surname staff] FROM Staff INNER JOIN (Clients INNER JOIN"
 " (Services INNER JOIN (Clients INNER JOIN Appointment ON Clients.ID = Appointment."
 "Client) ON Services.ID = Appointment.Service) ON Staff.ID = Appointment.Staff"
  "WHERE (((Appointment.[The date])= :thedate))";
 ADOQuery1->Parameters->ParamByName("thedate")->Value = StrToDate(ESearch->Text);
 ADOQuery1->Active=true;
ошибка синтаксиса оператора JOIN

такой вариант

C++
1
2
3
4
5
6
7
8
ADOQuery1->Active=false;
 ADOQuery1->SQL->Text= "SELECT Appointment.[The time], Clients.Surname, Services."
 "[The service], Staff.[Surname staff] FROM Staff INNER JOIN ON Staff.ID = Appointment.Staff"
 "INNER JOIN Clients ON Clients.ID = Appoinment.Client"
 "INNER JOIN Services ON Services.ID = Appointment.Service"
  "WHERE (((Appointment.[The date])= :thedate))";
 ADOQuery1->Parameters->ParamByName("thedate")->Value = StrToDate(ESearch->Text);
 ADOQuery1->Active=true;
ошибка синтаксиса оператора FROM

может есть идеи, у меня уже 4й день пошел

Добавлено через 2 минуты
во втором варианте лишние скобки в условии where, но и без них та же ошибка
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,354
Записей в блоге: 3
07.04.2023, 09:02
Лучший ответ Сообщение было отмечено camatsu1414 как решение

Решение

Цитата Сообщение от camatsu1414 Посмотреть сообщение
ошибка синтаксиса оператора FROM
ПРОБЕЛЫ!!!

Добавлено через 35 секунд
и в первом случае - тоже.

Добавлено через 2 минуты
Пишите уже текст запроса в одну строку, раз не понимаете, где ставить пробелы в перенесенном тексте. Либо используйте метод SQL->Add("") для формирования многострочного текста запроса. Только в этом случае не забудьте очистить старый текст запроса.
1
 Аватар для camatsu1414
0 / 0 / 0
Регистрация: 11.02.2023
Сообщений: 23
09.04.2023, 00:35  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
  ADOQuery1->Close();
  ADOQuery1->SQL->Clear();
 ShowMessage(ADOQuery1->SQL->Text);
 ADOQuery1->SQL->Add("SELECT [Apps].[The time], Customers.Surname, Serv.[The service],"
 " Empl.[Surname stuff] FROM Serv INNER JOIN (Empl INNER JOIN (Customers INNER JOIN Apps ON [Apps]."
 "Client = Customers.ID) ON Empl.ID = [Apps].Staff) ON Serv.ID = [Apps]."
 "Service WHERE ((([Apps].[The date])= :thedate))");
 ADOQuery1->Parameters->ParamByName("thedate")->Value = StrToDate(ESearch->Text);
 ADOQuery1->Open();
}
Может кому понадобится. тема закрыта , работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.04.2023, 00:35
Помогаю со студенческими работами здесь

Объединение таблиц SQL
Добрый день! Есть 2 таблицы с одинаковыми полями(dse, nv, ru), с одинаковым кол-вом записей, значения поля dse полностью совпадают в 2-х...

Sql запрос объединение таблиц
Есть две таблицы, table_1 и table_2 . В table_1 надо заполнить столбец b на основе данных из table_2. Столбец name общий. Загвоздка в том...

Объединение таблиц в sql server
Делаю объединение КАТЕГОРИИ и ТОВАРА ("select * from production.products INNER JOIN production.categories ON...

Объединение и суммирование таблиц SQL
Нужна помощь. Таблица Material с полями Naimenovanie, Kol, Cena_bez_NDS, Ed_izm Таблица Zakaz2 с полями Naimenovanie, Kol ...

sql объединение 3 таблиц join
Помогите составить SQL запрос соединение 3 таблиц связанных по полюКод Delphi IBQuery1.Active:=False; IBQuery1.SQL.Clear; ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru