Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2014, 20:48   #1
Rockot
Форумчанин
 
Аватар для Rockot
 
Регистрация: 01.06.2012
Сообщений: 139
По умолчанию Из двух таблиц в одну.

Доброго времени суток, у меня есть 3 таблица:
Товары, приход, расход.
Мне нужно сделать так, что бы при открытии таблицы "товары", считалось количество каждого товара по другим двум (приход, расход).

БД лежит в DBGride, подключение к базе с помощью компонентов ADO.

Помогите пожалуйста, заранее спасибо.
Следствие: 99% проблем, сваливаемых на Microsoft, является следствием тупости самих программистов.
Rockot вне форума Ответить с цитированием
Старый 08.02.2014, 00:27   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Какую СУБД используете?
Цитата:
Мне нужно сделать так, что бы при открытии таблицы "товары", считалось количество каждого товара по другим двум (приход, расход).

БД лежит в DBGride, подключение к базе с помощью компонентов ADO.
Если кроме DBGrid'а для отображения данных ничего не используется, то есть смысл использовать представление, в котором имеются столбцы для прихода и расхода. Соответственно, для вывода данных в эти столбцы в представлении должны быть, как минимум, соответствующие подзапросы.
К сожалению, без информации о том какая СУБД используется разговор может быть исключительно теоретическим. Что-либо конкретное подсказать, в данном случае, довольно сложно.
Streletz вне форума Ответить с цитированием
Старый 08.02.2014, 02:09   #3
Rockot
Форумчанин
 
Аватар для Rockot
 
Регистрация: 01.06.2012
Сообщений: 139
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
Какую СУБД используете?
Если кроме DBGrid'а для отображения данных ничего не используется, то есть смысл использовать представление, в котором имеются столбцы для прихода и расхода. Соответственно, для вывода данных в эти столбцы в представлении должны быть, как минимум, соответствующие подзапросы.
К сожалению, без информации о том какая СУБД используется разговор может быть исключительно теоретическим. Что-либо конкретное подсказать, в данном случае, довольно сложно.
Использую Access, а можно по точнее, как это можно сделать под запросом?
Следствие: 99% проблем, сваливаемых на Microsoft, является следствием тупости самих программистов.
Rockot вне форума Ответить с цитированием
Старый 08.02.2014, 10:08   #4
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Использую Access
К сожалению, в этом случае придётся использовать способ, который я привёл в посте #2.
Подзапрос -это, если говорить совсем простым языком, ещё один запрос внутри запроса.
Подробную информацию по ним можно посмотреть, например, здесь: Основы SQL. Оператор SELECT. Подзапросы.
В данном случае необходимо чтобы в подзапросе выполнялось суммирование. Для этого необходимо воспользоваться функцией SUM.
Streletz вне форума Ответить с цитированием
Старый 08.02.2014, 10:29   #5
Rockot
Форумчанин
 
Аватар для Rockot
 
Регистрация: 01.06.2012
Сообщений: 139
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
К сожалению, в этом случае придётся использовать способ, который я привёл в посте #2.
Подзапрос -это, если говорить совсем простым языком, ещё один запрос внутри запроса.
Подробную информацию по ним можно посмотреть, например, здесь: Основы SQL. Оператор SELECT. Подзапросы.
В данном случае необходимо чтобы в подзапросе выполнялось суммирование. Для этого необходимо воспользоваться функцией SUM.
Хм... Опыта к сожалению мало, до этого я работал только с MySQL, там как-то всё попроще, можешь пример подобного мне сделать, если не затруднит?
Следствие: 99% проблем, сваливаемых на Microsoft, является следствием тупости самих программистов.
Rockot вне форума Ответить с цитированием
Старый 08.02.2014, 10:35   #6
Rockot
Форумчанин
 
Аватар для Rockot
 
Регистрация: 01.06.2012
Сообщений: 139
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
К сожалению, в этом случае придётся использовать способ, который я привёл в посте #2.
Подзапрос -это, если говорить совсем простым языком, ещё один запрос внутри запроса.
Подробную информацию по ним можно посмотреть, например, здесь: Основы SQL. Оператор SELECT. Подзапросы.
В данном случае необходимо чтобы в подзапросе выполнялось суммирование. Для этого необходимо воспользоваться функцией SUM.
Как я понял из вашей ссылки (Основы SQL. Оператор SELECT. Подзапросы) мне нужно отобразить в гриде 2 столбца из двух таблиц, а затем их суммировать эти два столбца в третий. Я правильно понял?

Хм... отобразить я их ещё смогу, но вот как мне их суммировать....
Следствие: 99% проблем, сваливаемых на Microsoft, является следствием тупости самих программистов.
Rockot вне форума Ответить с цитированием
Старый 08.02.2014, 10:38   #7
Rockot
Форумчанин
 
Аватар для Rockot
 
Регистрация: 01.06.2012
Сообщений: 139
По умолчанию

Код:
SELECT SUM(OrderPrice) AS OrderTotal FROM Orders
Как мне выполнить к примеру такой запрос, если эти два значения в разных таблицах.
Следствие: 99% проблем, сваливаемых на Microsoft, является следствием тупости самих программистов.
Rockot вне форума Ответить с цитированием
Старый 08.02.2014, 10:49   #8
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
Радость

Вообще, в статьях из поста #4 примеров на эту тему более чем достаточно.
Вам нужно в Ваш запрос просто связать значения id товара из таблицы в подзапросе с SUM с id товара из главной таблицы.
Если конкретно по сабжу:
Код:
select a, (select sum(b) as b2 from tbl2 as t2 where t2.c2=t1.c1) from tbl1 as t1
Приблизительно как-то так...
К стати, в других СУБД тоже есть возможность использовать подзапросы, хотя безусловно есть обходные пути по проще, например функции. Однако, увы, в Access этого нет.
Streletz вне форума Ответить с цитированием
Старый 08.02.2014, 11:00   #9
Rockot
Форумчанин
 
Аватар для Rockot
 
Регистрация: 01.06.2012
Сообщений: 139
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
Вообще, в статьях из поста #4 примеров на эту тему более чем достаточно.
Вам нужно в Ваш запрос просто связать значения id товара из таблицы в подзапросе с SUM с id товара из главной таблицы.
Если конкретно по сабжу:
Код:
select a, (select sum(b) as b2 from tbl2 as t2 where t2.c2=t1.c1) from tbl1 as t1
Приблизительно как-то так...
К стати, в других СУБД тоже есть возможность использовать подзапросы, хотя безусловно есть обходные пути по проще, например функции. Однако, увы, в Access этого нет.
Постойте, но он же будет суммировать весь столбец, а не построчно...
Следствие: 99% проблем, сваливаемых на Microsoft, является следствием тупости самих программистов.
Rockot вне форума Ответить с цитированием
Старый 08.02.2014, 11:03   #10
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Почему весь? Только те строки которые соответствуют условию в предложении where подзпароса.
Streletz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Соединение несколько таблиц в одну REztor SQL, базы данных 8 31.12.2013 23:18
Объединение столбцов с нескольих таблиц в одну Enchanter Microsoft Office Access 8 11.06.2013 11:19
Данные из двух таблиц в одну reihtmonbern БД в Delphi 1 15.01.2013 23:25
объединение одинаковых таблиц в одну Алабор Microsoft Office Access 2 21.03.2011 21:17
Сведение нескольких таблиц в одну Sega Microsoft Office Excel 3 05.08.2008 15:21