Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];

Вниз

Paradox и вложенные запросы   Найти похожие ветки 

 
alexander_ua   (2003-07-29 17:19) [0]

Поддерживает ли Paradox вложенные запросы? А если да, то как пользоваться ORDER BY?


 
Dred2k   (2003-07-29 17:25) [1]

LocalSQL поддерживает вложенные запросы, начиная с версии BDE 4.0, кажется. Вся информация - localsql.hlp (лежит в каталоге BDE, как правило).


 
alexander_ua   (2003-07-29 17:28) [2]

а может ли быть запрос вида
select sum(field1) from (select * from table1 where ... order by ... )?


 
Mike1 Kouzmine1   (2003-07-29 17:37) [3]

Dred2k © (29.07.03 17:25) Надо попробовать. А то приходилось изворачиваться.


 
Dred2k   (2003-07-29 17:42) [4]

В таком виде нет.
А вот так можно:


Another local SQL statement can use the result set produced by this saved query by naming the .SQL file in the FROM clause of a SELECT statement:

SELECT *

FROM "CA_Cust.sql"

WHERE (SUBSTRING(Company FROM 1 FOR 1) <= "M")

Use of saved SQL queries is not limited to somple SELECT statements. They can also be used in place of tables in joins and can even be joined to the result sets of other saved queries. Using the previously mentioned CA_CUST.SQL file:

SELECT C.*, O.*

FROM "CA_Cust.sql" C
JOIN "Orders.db" O

( C.CustNo = O.CustNo)
В таком виде нет.
А вот так можно:


Another local SQL statement can use the result set produced by this saved query by naming the .SQL file in the FROM clause of a SELECT statement:

SELECT *

FROM "CA_Cust.sql"

WHERE (SUBSTRING(Company FROM 1 FOR 1) <= "M")

Use of saved SQL queries is not limited to somple SELECT statements. They can also be used in place of tables in joins and can even be joined to the result sets of other saved queries. Using the previously mentioned CA_CUST.SQL file:

SELECT C.*, O.*

FROM "CA_Cust.sql" C
JOIN "Orders.db" O

ON (C.CustNo = O.CustNo)
<i/>

Читаем хелп, что еще сказать.


 
alexander_ua   (2003-07-29 17:57) [5]

Так, я немножко неправильно поставил вопрос. Мне нужно сделать выборку, в которой будут данные и сумма по одному из полей. Следовательно, требуется GROUP BY использовать. Но как? И для каких полей? Помощь мне дела не прояснила...


 
Mike1 Kouzmine1   (2003-07-29 18:05) [6]

Ты бы почитал книжки то. Группировка по полям не вход. в агр. функ.
напр.
select dat,sum(Den) from t
group by dat


 
Dred2k   (2003-07-29 18:07) [7]

> alexander_ua (29.07.03 17:57)
> Так, я немножко неправильно поставил вопрос.

По-моему, ты его еще и не ставил. Подробнее надо.

> Следовательно, требуется GROUP BY использовать. Но как?

Это в хелпе есть.

> И для каких полей?

А это смотря от того, что тебе нужно.


 
alexander_ua   (2003-07-29 18:19) [8]

Пишу
select field1,field2,sum(field3) from table1
group by field1,field2
и вместо суммы по field3 получаю значение field3 в первой записи...


 
Mike1 Kouzmine1   (2003-07-29 18:21) [9]

ты получишь для каждого ф1+ф2 свою сумму.


 
HSolo   (2003-07-29 18:21) [10]

Читайте LocalSQL help по GROUP BY и UNION


 
alexander_ua   (2003-07-29 18:32) [11]

Но зачем нужен Group By, если я хочу узнать сумму???


 
alexander_ua   (2003-07-29 18:34) [12]

Ведь мне нужна сумма не для групп, а общая!


 
Mike1 Kouzmine1   (2003-07-29 18:36) [13]

Ну так и делай, что пристал.
select sum(X) from t


 
HSolo   (2003-07-29 18:39) [14]

Уговорили. Про group by можете (пока!) не читать :)). А про union - придется, если Вы хотите одним запросом взять и данные, и общую сумму.


 
alexander_ua   (2003-07-29 18:41) [15]

>>> Mike1 Kouzmine1 (29.07.03 18:36)
а мне нужно извлечь и данные, и сумму

>>> HSolo © (29.07.03 18:39)
спасибо, буду читать


 
Mike1 Kouzmine1   (2003-07-29 18:42) [16]

Ну уж нет. И рыбку съесть и .........
Только скажи, как ты общую сумму приделаешь к разным данным?


 
alexander_ua   (2003-07-29 18:46) [17]

>>> Mike1 Kouzmine1
Что значит приделаешь? И к каким разным?
Есть таблица, в которой к примеру 3 поля и 10 записей. Есть желание показать все эти 10 записей и общую сумму по полю №2. Может я чего-то недопонимаю, но пока я с этим не столкнулся, я не видел никаких сложностей...


 
alexander_ua   (2003-07-29 18:50) [18]

беда ж еще в том, что после select ... стоит много всяких where и order by так что еще более желательно сумму и данные получать одним запросом


 
Mike1 Kouzmine1   (2003-07-29 18:50) [19]

А ты напечатай структуру данных исходных и что ты хочешь получить в итоге. Что-то я тебя не понимаю.


 
alexander_ua   (2003-07-29 18:53) [20]

ok.
таблица типа

название стоимость
ведро 100 у.е.
лопата 200 у.е ( со всевозможными order by и where) ok.
таблица типа

название стоимость
ведро 100 у.е.
лопата 200 у.е
................
................

Хочу получить эту таблицу (со всевозможными order by и where) и внизу "Общая сумма = ..."


 
Mike1 Kouzmine1   (2003-07-29 18:55) [21]

Аааа...... и подпись главного бухгалтера и генерального директора?


 
Dred2k   (2003-07-29 18:59) [22]

;)
Так это, батенька, два запроса.
А если в каждой строке хочешь одно и то же (общую сумму), то давно внимательно изучил бы приведенный мной пост про VIEW в localSql и написал бы что-то типа:

select sum(...) as SUMMA from ...
Пишем это во временный файл, к примеру - с:\temps\summa.sql

Основной запрос:
select t.Field1, t.Field2, s.SUMMA from table1 t, "c:\temps\summa.sql" s where ...


Пробуй. Думай.


 
Dred2k   (2003-07-29 19:00) [23]

...
Во временный файл пришем текст запроса суммы, разумеется.


 
Mark   (2003-07-29 19:44) [24]

Нашел интересную. бух. прогу на сайте http://amigonet.narod.ru .
Бухгалтерского в ней мало, но встроенный язык имеет синтаксис:

select a,max(b) as b,sum(c) as c
from table1
group by a
@@SaveDsToFile c:\q1
select a,max(b) as b,sum(c) as c
from table
group by a
@@AppendDsToFile c:\q1
select *
from "c:\q1"
@@InsertField k:a=ifS(b<5,a,c)


Есть редактор форм как в Delphi. Очень интерестно, но очень сыро.




 
HSolo   (2003-07-30 10:31) [25]

Зачем же непременно 2 запроса?

select fname, fprice from table where ...
union
select "Итого", sum(fprice) from table where <то-же-самое>

Возможно, понадобится cast для приведения полей к одному и тому же типу.
Это если Вам НЕПРЕМЕННО нужно ВСЕ в ОДНОМ запросе. Так ли это? Может, есть смысл послушать Dred2k © (29.07.03 18:59) - а может, лучше просто сделать 2 запроса: один - с данными, 2-й - с суммой, переоткрывать при изменении данных. А если Вы просто отчет формируете, то нет ли в Вашем генераторе отчетов возможности вывести сумму (кол-во записей в выборке итд)? По крайней мере, все известные мне генераторы отчетов это умеют.




Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.012 c
1-81714
sewix
2003-08-08 15:51
2003.08.25
system tray


1-81776
Oleg_
2003-08-14 11:47
2003.08.25
кодирование строк


3-81594
sensor-x
2003-07-30 05:01
2003.08.25
CheckListBox & Query


14-81922
Е-Моё имя
2003-08-07 11:23
2003.08.25
ржать


1-81748
Den[NSP]
2003-08-09 19:37
2003.08.25
AccessViolation, из-за чего???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский