Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужна помощь с запросом, БД Firebird 2.0 
:(
    Опции темы
php5
Дата 28.1.2009, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 15.8.2007

Репутация: нет
Всего: нет



Есть запрос  примерно следующего вида:
Код

SELECT  dataA , 
            (select   data1 
              FROM table_B
              where id=1) as  as_data1 , 
             (select   data2 
              FROM  table_C  
              where id=1) as  as_data2 
FROM   table_A
WHERE  id=1;

Как сделать так что бы  этот запрос мог еще вернуть  и разницу между  переменными   ( as_data1 -  as_data2 ) 


Это сообщение отредактировал(а) skyboy - 30.1.2009, 01:44
PM MAIL   Вверх
Deniel_li
Дата 28.1.2009, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 6.12.2007

Репутация: нет
Всего: 1



очевидно на вашем примере

(select   data1 FROM table_B  where id=1) - (select   data2 FROM  table_C  where id=1)

или обернуть в селект


PM MAIL   Вверх
php5
Дата 29.1.2009, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 15.8.2007

Репутация: нет
Всего: нет



а если мне при этом нужны и значение as_data1,  as_data2  ? Это что ж получается 
Код

SELECT  dataA , 
             (select   data1 
               FROM table_B  
               where id=1) as  as_data1 ,
              (select   data2 
               FROM  table_C  
               where id=1) as  as_data2, 
              ( (select   data1 FROM table_B  where id=1) 
                 - 
                (select   data2 FROM  table_C  where id=1)
               ) as as_data3 
FROM   table_A
WHERE  id=1;

как то не рационально smile 

Это сообщение отредактировал(а) skyboy - 30.1.2009, 01:43
PM MAIL   Вверх
Deniz
Дата 29.1.2009, 08:45 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 6
Всего: 44



Код
SELECT  dataA, table_B.data1, table_C.data2, table_B.data1 - table_C.data2 as data3
FROM   table_A
  join table_B on table_A.id = table_B.id
  join table_C on table_A.id = table_C.id
WHERE  table_A.id=1



--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
php5
Дата 29.1.2009, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 15.8.2007

Репутация: нет
Всего: нет



А как быть если   запрос такой 
Код

SELECT  dataA , (
              select   data1 
              FROM table_B 
              where param1=1 and  table_B.id=table_A.id
            ) as  as_data1 , 
            (select   data2
              FROM  table_C  
              where param2=2 and  table_C.id=table_A.id
             ) as  as_data2 
FROM   table_A 
WHERE  id=1;



Это сообщение отредактировал(а) skyboy - 30.1.2009, 01:41
PM MAIL   Вверх
Akella
Дата 29.1.2009, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: нет
Всего: 329



php5, убери тэги цитаты из своего сообщения, не очень красиво и удобно
PM MAIL   Вверх
php5
Дата 29.1.2009, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 15.8.2007

Репутация: нет
Всего: нет



А где  у меня теги цитаты  ?    smile 
PM MAIL   Вверх
Akella
Дата 29.1.2009, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: нет
Всего: 329



Да? Это наверное так форум твоё сообщение выводит, просто оно вылазит далеко за правую часть экрана.
PM MAIL   Вверх
skyboy
Дата 30.1.2009, 01:42 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 15
Всего: 260



[offtop]
Как раз в цитате работает автоперенос. Это у него теги code используются и автор поставил только минимум переносов строки. А принудительно в коде строки не переносятся.
[/offtop]

PM MAIL   Вверх
Deniz
Дата 30.1.2009, 06:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 6
Всего: 44



Цитата(php5 @  29.1.2009,  18:47 Найти цитируемый пост)
А как быть если   запрос такой 
а поправить/попробовать самому никак?
Код

SELECT  dataA, table_B.data1, table_C.data2, table_B.data1 - table_C.data2 as data3
FROM   table_A
  left join table_B on (table_A.id = table_B.id and param1 = 1)
  left join table_C on (table_A.id = table_C.id and param2 = 2)
WHERE  table_A.id=1
телепатов мало, объяснишь подробнее - ответ будет более правильным.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
php5
  Дата 30.1.2009, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 15.8.2007

Репутация: нет
Всего: нет



Спасибо Deniz за пример ,  а если в подзапросах  нужно еще  и применять функцию   SUM ,
Код

SELECT  dataA , (
              select   SUM(data1) 
              FROM table_B 
              where param1=1 and  table_B.id=table_A.id
            ) as  as_data1 , 
            (select   SUM(data2)
              FROM  table_C  
              where param2=2 and  table_C.id=table_A.id
             ) as  as_data2 
FROM   table_A 
WHERE  id=1;

то получается,  что нужно вернуться  к примеру   Deniel_li    smile 
PM MAIL   Вверх
Deniz
Дата 30.1.2009, 15:23 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 6
Всего: 44



Цитата(php5 @  30.1.2009,  17:19 Найти цитируемый пост)
а если в подзапросах  нужно еще  и
пипец, а сразу все нельзя рассказать?
Цитата(php5 @  30.1.2009,  17:19 Найти цитируемый пост)
то получается,  что нужно вернуться  к примеру   Deniel_li 
пока не нужно.
Ты сам-то пробовал хоть что-нибудь поправить в запросе?
Не думал что так трудно вставить в запрос sum и group by
Код

SELECT  dataA, sum(table_B.data1), sum(table_C.data2), sum(table_B.data1) - sum(table_C.data2) as data3
FROM   table_A
  join table_B on (table_A.id = table_B.id and param1 = 1)
  join table_C on (table_A.id = table_C.id and param2 = 2)
WHERE  table_A.id=1
group by dataA
чего еще изволите?


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0631 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.