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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2014, 17:12   #11
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

в любой литературе написано
eval вне форума Ответить с цитированием
Старый 03.04.2014, 17:15   #12
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В списке SELECT перечень выражений. Константа тоже выражение. Ввел для того, что бы сортировать и остаток в начало засунуть по каждому договору
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.04.2014, 11:55   #13
Konstantin_ua
Не судите строго
Форумчанин
 
Аватар для Konstantin_ua
 
Регистрация: 31.03.2011
Сообщений: 202
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Одним запросом сразу все примерно в таком духе
Код:
SELECT 1 AS Kind,Date() AS DATPLAT,D.DOGOVOR_ID,D.SUMMA-ISNULL(SUM(P.SUMMA),0) AS SUMMA
  FROM Dogovor D
    LEFT JOIN Plateg P ON P.DOGOVOR_ID=D.DOGOVOR_ID
  GROUP BY D.DOGOVOR_ID,D.SUMMA
UNION ALL
SELECT 2 AS Kind,P.DATPLAT,P.DOGOVOR_ID,P.SUMMA
  FROM Plateg P
ORDER BY 3,1,2
Я так понял этот запрос извлекает все Сумы и выводит по ним Оплаты.
Мне нужно что бы, выводило только 1 Суму и по ней оплаты, а какую именно, передаем через параметр.Пробую так, видает ошибку параметр id not found

Код:
qry1.SQL.Add( 'SELECT DATE() AS Data, Summ_money-ISNULL(SUM(O.Summa),0) AS Suma'   //берем сегодняшнюю дату и вычисляем остаток

                +   'FROM Putt P WHERE P.dogovir=:id'                                   // з таблицы Putt,  нужную нам запись
                +     'LEFT JOIN Oplata AS O ON P.dogovir=O.dogovir '                   //извлекаем из правой таблицы все данные, которые подходят условию(подобие команды WHERE)
                +   'GROUP BY O.Dogovir'                                               //группируем данные что бы не было повторений по № договора, он идет как ключевое поле для этих 2 таблицы
                + 'UNION ALL'                                                          //объединяем запросы
                + 'SELECT Data, Summa'                                                 //делаем запрос на поля: дата, сума
                +   'FROM Oplata O'                                                    // с таблицы Oplata
                + 'ORDER BY DATA' );                                                   //делаем что бы сегодняшния дата была сверху

    qry1.Parameters.ParamByName('id').Value:=st;
33.jpg
Konstantin_ua вне форума Ответить с цитированием
Старый 04.04.2014, 12:06   #14
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

посмотрите в справке по эскьюэль вашего диалекта, такого запроса быть не может
eval вне форума Ответить с цитированием
Старый 04.04.2014, 12:15   #15
Konstantin_ua
Не судите строго
Форумчанин
 
Аватар для Konstantin_ua
 
Регистрация: 31.03.2011
Сообщений: 202
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
посмотрите в справке по эскьюэль вашего диалекта, такого запроса быть не может
просто не знаю как с таблицы извлечь запись при помощи параметра, на сколько я понимаю если мы используем
Код:
LEFT JOIN
, то никакого
Код:
WHERE
быть не может, где теперь его прописать? или такой запрос невозможен?
Konstantin_ua вне форума Ответить с цитированием
Старый 04.04.2014, 12:19   #16
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
то никакого WHERE быть не может, где теперь его прописать? или такой запрос невозможен?
С какого перепуга? Пишется там где и положено. Во втором запросе тоже WHERE нужен для нужного договора
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.04.2014, 12:30   #17
Konstantin_ua
Не судите строго
Форумчанин
 
Аватар для Konstantin_ua
 
Регистрация: 31.03.2011
Сообщений: 202
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
С какого перепуга? Пишется там где и положено. Во втором запросе тоже WHERE нужен для нужного договора
а почему тогда
Цитата:
посмотрите в справке по эскьюэль вашего диалекта, такого запроса быть не может
.
Konstantin_ua вне форума Ответить с цитированием
Старый 04.04.2014, 12:36   #18
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

так вы загляните, все и ясно станет
eval вне форума Ответить с цитированием
Старый 04.04.2014, 12:55   #19
Konstantin_ua
Не судите строго
Форумчанин
 
Аватар для Konstantin_ua
 
Регистрация: 31.03.2011
Сообщений: 202
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
так вы загляните, все и ясно станет
может я не туда смотрю, ну по мне так все правильно, есть 2 запроса объединенных с помощью UNION ALL, в 1 мы используем 2 таблицы.Что не так?
может сюда подзапрос вставить?
Код:
ISNULL(SUM(O.Summa),0)

Последний раз редактировалось Konstantin_ua; 04.04.2014 в 13:00.
Konstantin_ua вне форума Ответить с цитированием
Старый 04.04.2014, 12:59   #20
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
а почему тогда
Потому, что WHERE не туда засунули. Его место после всех JOIN-ов и перед GROUP BY. А JOIN-ы часть предложения FROM
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод записей в промежутке Nenado SQL, базы данных 6 25.01.2013 00:30
запрос на вывод записей Михаил Юрьевич БД в Delphi 9 04.12.2012 22:20
вывод из бд 20 записей в 2 колонки promt PHP 5 25.09.2011 13:49
DBGridEh вывод записей grom333 Компоненты Delphi 3 04.05.2011 21:00
вывод связных записей из БД Tanuska___:) БД в Delphi 7 19.05.2008 17:03