![]() |
|
|
![]()
|
|
| alf138 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 15.11.2009 Репутация: нет Всего: нет |
Есть таблица1.
наименование|колво --------------------------- дет1 |1 дет2 |2 --------------------------- таблица.дет1. нименование|колво --------------------------- запч1 |2 запч4 |4 таблица.дет2 наименование|колво --------------------------- запч1 |5 запч3 |5 Как умножить значения из первой таблицы на значения остальных, при том что названия таблиц известны, и сгруппировать по запч. запч1 ----7шт запч3-----10шт запч4-----4шт Это сообщение отредактировал(а) alf138 - 4.1.2011, 20:10 |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
а дельфи тут при чём?
|
|||
|
||||
| Vas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 23 Всего: 28 |
Akella, у него на каждую дет. (хз наверное деталь) из таблицы 1 создана отдельная таблица. SQL там никак не катит, если структуру не поменяет, так что выбирать токи в цикле в дельфи, и то не факт что получится.
-------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
|||
|
||||
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 1 Всего: 58 |
Срочно реструктурировать таблицы и сделать всего 1 запрос.
|
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 8 Всего: 44 |
а результат для запч1 точно правильный?
-------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| Vas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 23 Всего: 28 |
Deniz, для запч1 как раз таки правильный, а вот для запч3 должно быть 5, исходя из приведенных таблиц.
Видимо единственный выход, бежать по всем таблицам, строить список запчастей и суммировать к существующей, если она уже есть в списке, а если нет, то добавлять новую запись, со значением. Можно два массива использовать, а можно и StringList с записью вида: Имя переменной = Значение P.S. Прям СУБД получится Это сообщение отредактировал(а) Vas - 12.1.2011, 08:22 -------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 8 Всего: 44 |
Дет1 кол-во 1, в нее входят: запч1 | 2 запч4 | 4 Дет2 кол-во 2, в нее входят: запч1 | 5 запч3 | 5 Итого имеем: запч1: в дет1 - 2 шт, в дет2 - 2х5 шт (т.к. дет2 у нас 2 шт) = 12 шт В общем филармония какая-то. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| Vas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 29.6.2005 Где: Stavropol region Репутация: 23 Всего: 28 |
Мда, и правда черти что
-------------------- И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин) |
|||
|
||||
| drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: нет Всего: 8 |
В данном случае решение достигается исключительно на SQL...
Примерная схема такова: - создаем временную таблицу - делаем умножение таблицы1 на таблица.дет1. и результат сохраняем во временной таблице - делаем теже действия для других таблиц - производим выборку из временной таблицы суммируя по полю количество и группируя но названию все это можно реализовать в виде хранимой процедуры, либо серией запросов из делфей (это уже как будет удобно) PS: но идеально изменить структуру хранения данных это упростит дальнейшие манипуляции. -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
| alf138 |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 15.11.2009 Репутация: нет Всего: нет |
Все спасибо разобрался с умножение и группировкой получилось что то такое
Теперь выводятся значения сгруппированные но в виде 2 6 3 7 и есть база где эти 2 и 3 расшифровывается как 2-дет2 3-дет4 Вот думал сделать вторым Join но второй Join не пошел
Вторая мысль родилась с помощью lookup поля, но QUERY так не сделаешь, при создание поля он ругается на отсутствие поля из которого берутся значения, вот и думаю как быть. Может кто что подскажет ? З.Ы Даже пробовал так, но не получилось. Это сообщение отредактировал(а) alf138 - 13.1.2011, 23:46 |
||||
|
|||||
| drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: нет Всего: 8 |
вложенный SELECT -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 8 Всего: 44 |
зачем? Второго join'а хватит.
А вот почему нужно спросить у автора, как он писал этот join. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| alf138 |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 15.11.2009 Репутация: нет Всего: нет |
вот так запрос отрабатывает
получается таблица деталь|сумма 4 7 5 9 если добавляю join вот так
ругается "Ошибка синтаксиса (пропущен оператор)в выражение запроса Наименования.Деталь" Это сообщение отредактировал(а) alf138 - 14.1.2011, 10:23 |
||||
|
|||||
| CROTishka |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 30.7.2009 Репутация: 1 Всего: 2 |
А как же динамика? в любом из современных диалектов скуля такой запрос написать не сложно. Хотя вообще за такую архитектуру ссаными тряпками надо... Это сообщение отредактировал(а) CROTishka - 14.1.2011, 10:38 |
|||
|
||||
| Frees |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 23 Всего: 54 |
?? Добавлено @ 10:47 или как то так
Это сообщение отредактировал(а) Frees - 14.1.2011, 10:48 -------------------- Кольцов Виктор Владимирович |
||||
|
|||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |