Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 29.03.2013
Сообщений: 81

Запрос с двумя таблицами

15.11.2017, 21:24. Показов 1177. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите составить SQL запрос с двумя таблицами(Access база). Имеются 2 таблицы(рис 1.jpg) с одинаковыми полями, в первой таблице много записей, во второй намного меньше, нужно определить количество записей во второй таблице и каждое ее "Name " найти в первой таблице и вычесть значение первой таблицы из значения второй таблицы и сохранить изменения в первой таблице, должно получиться как на рис 2. jpg.

Что то у меня не совсем получается...=( желательно все одним запросом

C++
1
2
3
4
5
6
7
8
9
10
var
i,z:integer;
begin
z:=Query1.SQL.ADD("SELECT count(*) from table_2"); //количество записей во второй таблице
for i:=1 to z 
     begin
     SQL.Clear;
     Query1.SQL.ADD("SELECT * from table_1,table_2 where name.table_2=name.table_1");
     Query2.SQL.ADD("UPDATE table_1 SET table_1.number=table_1[number]-table_2[number] ");
end;
Миниатюры
Запрос с двумя таблицами   Запрос с двумя таблицами  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.11.2017, 21:24
Ответы с готовыми решениями:

DBGrid с двумя таблицами
в MS SQL созданы две таблицы. как в 1 DBGrid закинуть определенные поля из двух таблиц? в дальнейшем эти таблицы будут...

Создание запроса с двумя таблицами
Здравствуйте, помогите пожалуйста составить запрос, состоящий из двух таблиц. В первом отчете вывести фамилию, имя и отчество танцора, а...

Зависимость между двумя таблицами ADOQuery
Добрый день товарищи! Помогите пожалуйста связать три таблички. Имеется таблица "Преступление" с полями id_Преступления, Номер...

8
5966 / 4542 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
15.11.2017, 22:03
Цитата Сообщение от mikl25 Посмотреть сообщение
Что то у меня не совсем получается...=( желательно все одним запросом
удали весь свой код и используй только запрос из строки 9 (если он рабочий)

если не рабочий, напиши рабочий
ЗЫ тебе нужен только 1 UPDATE остальное не нужно
0
0 / 0 / 0
Регистрация: 29.03.2013
Сообщений: 81
15.11.2017, 22:40  [ТС]
нет, похоже не рабочий, пишет 'ошибка синтаксиса(пропущен оператор)'

Добавлено через 8 минут
вот такой запрос попробовал, тоже ошибка выходит
UPDATE table_1 INNER JOIN table_2 ON table_1.name=table_2.name SET table_1.number=table_1.number-table_2.number
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
15.11.2017, 23:06
А посмотреть учебный материал по синтаксису SQL так уж сложно?
Запросов всего четыре и выяснить из чего должен состоять запрос для обновления данных нужно даже не день, а всего десять - двадцать минут.

Нет же в UPDATE никаких JOIN. К тому же в UPDATE практически всегда присутствует условие (WHERE ...), по которому определяется какие записи должны обновляться. Без этого условия будут обновлены ВСЕ записи в таблице.

Чтобы получить значение из другой таблицы, вначале нужно выполнить запрос SELECT чтобы получить нужное значение (поместив его в переменную), которое потом будет участвовать в арифметической операции UPDATE. А вставлять в текст этого запроса поля из других таблиц - бессмыслица.
Кстати, JOIN (объединение данных из разных таблиц) может быть только в запросах SELECT.
К тому же, в приведенных таблицах нет важного поля, которое содержит уникальный номер (идентификатор) каждой строки таблицы.
Видимо, это только макет реальной базы данных, но такой макет, что на нем нельзя отработать решение задачи.

Добавлено через 4 минуты
И странно выглядят двойные кавычки, обрамляющие константные строки в Дельфи. Неужели компилятор пропускает... ? (вопрос риторический).
0
0 / 0 / 0
Регистрация: 29.03.2013
Сообщений: 81
15.11.2017, 23:14  [ТС]
нет, в самой программе одинарные ковычки, а id нет потому что возможно некоторые записи будут удалять из базы и допустим станет Id1,Id2,Id7 и т.д и хотел вместо этого использовать определение количество записей в таблице
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
15.11.2017, 23:33
Постулаты, без которых разработчика БД можно назвать дилетантом:
- Без полей-идентификаторов (ID) - нет базы.
- ID чисто служебные поля и к пользователям никакого отношения иметь не могут.
- Нумерация строк для пользователей происходит только в клиентской программе.
- Остатки в базе НЕ ХРАНЯТ.

По теме пока достаточно.
0
5966 / 4542 / 1094
Регистрация: 29.08.2013
Сообщений: 28,151
Записей в блоге: 3
16.11.2017, 07:47
Цитата Сообщение от mikl25 Посмотреть сообщение
вот такой запрос попробовал, тоже ошибка выходит
сочувствую, а дальше что?

напиши правильный запрос в аксессе, перенеси его в делфи и у тебя все будет работать
не знаешь как написать запрос?
задай вопрос. только именно как вопрос, а не пиши "вот так пробовал - не работает"

Добавлено через 4 минуты

Не по теме:

Цитата Сообщение от Скандербег Посмотреть сообщение
- Без полей-идентификаторов (ID) - нет базы.
база то есть, но вот работать с ней..
Цитата Сообщение от Скандербег Посмотреть сообщение
- ID чисто служебные поля и к пользователям никакого отношения иметь не могут.
ну в таблице номенклатуры (справочник) еще можно показывать ID, а в остальных?
Цитата Сообщение от Скандербег Посмотреть сообщение
- Нумерация строк для пользователей происходит только в клиентской программе.
а где нумерация должна происходить? на сервере?
Цитата Сообщение от Скандербег Посмотреть сообщение
- Остатки в базе НЕ ХРАНЯТ.
тут конечно все зависит от области, но их действительно там не хранят:)

ой я дурак дилетант

0
0 / 0 / 0
Регистрация: 29.03.2013
Сообщений: 81
16.11.2017, 10:07  [ТС]
Id есть в обоих таблицах базы, на картинке не указал, как создать такой запрос?
0
W
 Аватар для kavasaka
115 / 115 / 33
Регистрация: 16.04.2013
Сообщений: 750
16.11.2017, 10:27
Цитата Сообщение от mikl25 Посмотреть сообщение
2 таблицы(рис 1.jpg) с одинаковыми полями
Зачем один и тот же текст 2 раза в базе хранить?? Сделай одну таблицу справочник, а вторую движение товара (приход/расход). Остальное все динамически запросами вычисляется. Короче сначала базу исправляй потом уже за код берись.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.11.2017, 10:27
Помогаю со студенческими работами здесь

Вопрос про связь между двумя таблицами
Привет всем. Помогите встать на путь истинный что-то я немного запутался. В общем проблема в следующем. Есть база MS Access, в ней есть...

Как создать связь между двумя таблицами
Я создала две таблицы в Database Desktop, но не могу их связать один-ко-многим. Кто может объяснить как это сделать?

Создание связи между двумя таблицами MS Access, используя ADOQuery
Здравствуйте! У меня в Access есть две связанные между собой таблицы. Я в Delphi вставила три компонента ADOConnection, DataSource,...

Запрос AdoQuery, соединение с таблицами в разных формах. Delphi. DBGrid
Здравствуйте, помогите пожалуйста! В общем нужно чтоб при выборе определенного (курса)из грида, а после нажатии "выбрать",...

MySQL запрос c двумя таблицами?
Всем привет. Допустим, у меня есть таблица с users пользователями, в ней такие поля: id, login, password. И также есть таблица blacklist,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru