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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2012, 21:22   #1
vladislav_m
Пользователь
 
Регистрация: 29.03.2011
Сообщений: 62
По умолчанию перенос данных в другую колонку dbgrideh

Доброго времени суток! Ребят, возникла небольшая проблема.. которую незнаю как реализовать..




выдергиваю запросом нужные данные.. загоняю в датасет и отображаю в dbgrideh

нужно , если ID_vid_prodaj = 3 - то создать доп колонку и занести туда эти данные а не вниз пускать под где ID_vid_prodaj =1 .. как провернуть?
vladislav_m вне форума Ответить с цитированием
Старый 22.04.2012, 21:53   #2
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

Эти данные это какие?
=master= вне форума Ответить с цитированием
Старый 22.04.2012, 22:09   #3
vladislav_m
Пользователь
 
Регистрация: 29.03.2011
Сообщений: 62
По умолчанию

Цитата:
Сообщение от =master= Посмотреть сообщение
Эти данные это какие?
нужно чтоб ID_vid_prodaj = 1 - шли также как и идут, а данные ID_VID_PRODAJ которых равен 3 - в новую колонку писались.
vladislav_m вне форума Ответить с цитированием
Старый 22.04.2012, 22:38   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Полностью переделать SELECT. Показывайте ваш и структуру таблицы приведите
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.04.2012, 22:50   #5
vladislav_m
Пользователь
 
Регистрация: 29.03.2011
Сообщений: 62
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Полностью переделать SELECT. Показывайте ваш и структуру таблицы приведите
Код:

SELECT     *
FROM         dbo.Продажи INNER JOIN
                      dbo.Магазины ON dbo.Продажи.ID_magazine = dbo.Магазины.ID_magazine AND dbo.Магазины.ID_marshrut = 3
WHERE     (dbo.Продажи.ID_vid_prodaj = 1) AND (dbo.Продажи.Дата = '04.20.2012') OR
                      (dbo.Продажи.ID_vid_prodaj = 2) OR
                      (dbo.Продажи.ID_vid_prodaj = 3)

Данные выдергиваю из таблицы "Продажи" [ID_prodaj, ID_vid_prodaj, ID_magazine, Выдано, Продано, Остаток, Дата]. Магазины [ID_magazine, ID_marshrut, Наименование магазина]. Маршрут [ID_marshrut, Наименование маршрута]

Связь: Магазин (1) - (Много) Продажи , Магазины (много) - (1) маршрут

Нужно получить что то вроде :




ID_vid_prodaj = 3 -- это вид "Справочник" , нужно чтоб эти данные заносились в новую колонку под свой магазин..

-------------------------
Можно конечно попробовать, 2 запроса выполнить.. на разные виды продаж.. но думаю что данные со второго запроса - я не смогу отобразить в dbgrideh..
vladislav_m вне форума Ответить с цитированием
Старый 22.04.2012, 23:09   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Что-то вроде этого
Код:
SELECT *,(SELECT P.План FROM Продажи P WHERE P.ID_magazine=Продажи.ID_magazine AND P.ID_vid_prodaj=3 AND P.Дата='04.20.2012') AS Plan
  FROM dbo.Продажи INNER JOIN dbo.Магазины ON dbo.Продажи.ID_magazine = dbo.Магазины.ID_magazine AND dbo.Магазины.ID_marshrut = 3
  WHERE (dbo.Продажи.ID_vid_prodaj = 1) AND (dbo.Продажи.Дата = '04.20.2012')
P.План - или что вместо плана
Будет работать, если не более одной записи ID_vid_prodaj=3 для ID_vid_prodaj=1 по магазину и дате, иначе проблемы
Что делать с ID_vid_prodaj=2 не видно

ADD Кстати можно SUM(P.План) вместо P.План если возможно несколько записей
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 22.04.2012 в 23:21.
Аватар вне форума Ответить с цитированием
Старый 22.04.2012, 23:35   #7
vladislav_m
Пользователь
 
Регистрация: 29.03.2011
Сообщений: 62
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Что-то вроде этого
Код:
SELECT *,(SELECT P.План FROM Продажи P WHERE P.ID_magazine=Продажи.ID_magazine AND P.ID_vid_prodaj=3 AND P.Дата='04.20.2012') AS Plan
  FROM dbo.Продажи INNER JOIN dbo.Магазины ON dbo.Продажи.ID_magazine = dbo.Магазины.ID_magazine AND dbo.Магазины.ID_marshrut = 3
  WHERE (dbo.Продажи.ID_vid_prodaj = 1) AND (dbo.Продажи.Дата = '04.20.2012')
P.План - или что вместо плана
Будет работать, если не более одной записи ID_vid_prodaj=3 для ID_vid_prodaj=1 по магазину и дате, иначе проблемы
Что делать с ID_vid_prodaj=2 не видно

ADD Кстати можно SUM(P.План) вместо P.План если возможно несколько записей

сложно конечно новичку пока переварить такую инфу от профессионала)..

что такое P. в запросах?)
ID_vid_prodaj = 1 - он будет постоянно - дата к нему дописывается через параметр, который берется из даты текущей, id_vid_prodaj = 3- даты у него нет, можно как нить дописать в запросе чтоб он выбивал этот id_vid_prodaj=3 тогда, когда в поле остаток <> 0 у него?
a id_vid_prodaj 2 - аналогия что и vid_prodaj=3) - думаю сам его по примеру вашему потом соображу как дописать.
vladislav_m вне форума Ответить с цитированием
Старый 22.04.2012, 23:46   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

P - псевдоним, чтобы не писать 'Продажи.' и для отличия от этой же таблицы в основном запросе. Если даты нет, то лучше так
Код:
SELECT *,(SELECT SUM(P.План) FROM Продажи P WHERE P.ID_magazine=Продажи.ID_magazine AND P.ID_vid_prodaj=3) AS Plan
...
По хорошему, чтобы написать правильный запрос, учитывающий все возможные ситуации, нужно иметь полное представление о данных в таблицах, а так - все примерно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.04.2012, 23:54   #9
vladislav_m
Пользователь
 
Регистрация: 29.03.2011
Сообщений: 62
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
P - псевдоним, чтобы не писать 'Продажи.' и для отличия от этой же таблицы в основном запросе. Если даты нет, то лучше так
Код:
SELECT *,(SELECT SUM(P.План) FROM Продажи P WHERE P.ID_magazine=Продажи.ID_magazine AND P.ID_vid_prodaj=3) AS Plan
...
По хорошему, чтобы написать правильный запрос, учитывающий все возможные ситуации, нужно иметь полное представление о данных в таблицах, а так - все примерно
пишу так

Код:


SELECT *,(SELECT SUM(P.Выдано) FROM Продажи P WHERE P.ID_magazine=Продажи.ID_magazine AND Продажи.ID_vid_prodaj=3) AS Plan
  FROM dbo.Продажи INNER JOIN dbo.Магазины ON dbo.Продажи.ID_magazine = dbo.Магазины.ID_magazine AND dbo.Магазины.ID_marshrut = 3
  WHERE (dbo.Продажи.ID_vid_prodaj = 1) AND (dbo.Продажи.Дата = '04.20.2012')
в ответ: incorrect syntax near the keyboard 'PLAN'
vladislav_m вне форума Ответить с цитированием
Старый 23.04.2012, 00:05   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Косяк сразу здесь, но ошибка скорее всего не из-за этого, причины не вижу
Код:
SELECT *,(SELECT SUM(P.Выдано) FROM Продажи P WHERE P.ID_magazine=Продажи.ID_magazine AND P.ID_vid_prodaj=3) AS Plan
СУБД ваше поддерживает вложенные запросы?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос данных из одной БД в другую demiancz БД в Delphi 1 11.03.2012 18:53
Перенос данных из форма в другую книгу Alex-sib Microsoft Office Excel 1 06.03.2012 18:10
Перенос данных в другую таблицу. GreenShuller БД в Delphi 1 06.07.2010 05:34
Изменение данных и перенос данных из одной таб в другую Kot9ra Microsoft Office Access 13 02.07.2010 12:22
Перенос данных в из 1 таб. в другую... ivp88 БД в Delphi 12 11.01.2008 15:45