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

Вниз

Возможно ли сделать такой запрос?   Найти похожие ветки 

 
gsvserg   (2003-08-08 15:25) [0]

Есть две связанные таблицы.
table1 - id, tovar
table2 - id, parametr
Нужно чтобы в результате отображалось поле, в котором была бы сумма записей table2.parametr, т.е.

id | tovar | par_union
1 имя товара parametr1+parametr2+...
...


 
Семен Сорокин   (2003-08-08 15:32) [1]

возожно через курсор.


 
denche   (2003-08-08 15:33) [2]

Если в table1 сочетание id и tovar уникально, то
это просто
select t1.id, t1.tovar, sum(t2.parametr) as par_union
from table1 t1 inner join table2 t2 on t1.id = t2.id
group by t1.id, t1.tovar


 
Семен Сорокин   (2003-08-08 15:37) [3]

denche (08.08.03 15:33)
это если parametr - число
gsvserg © (08.08.03 15:25)
какой тип поля parametr?


 
gsvserg   (2003-08-08 15:43) [4]

Sum() не подходит, t2.parametr - поле символьное


 
denche   (2003-08-08 15:44) [5]

было сказано сумму, а тип поля неплохо бы знать....


 
Семен Сорокин   (2003-08-08 15:45) [6]

тогда см. Семен Сорокин © (08.08.03 15:32)


 
gsvserg   (2003-08-08 15:53) [7]

>Семен Сорокин © (08.08.03 15:45)
А по подробнее о курсоре, какой курсор? что с ним делать?


 
Семен Сорокин   (2003-08-08 16:15) [8]

если в поле все-же числа в символьном виде, то:

select t1.id, t1.tovar, sum(CAST(t2.parametr AS int или numeric(?, ?))) as par_union
from table1 t1 inner join table2 t2 on t1.id = t2.id
group by t1.id, t1.tovar

инчаче, если надо склеить строки, то вот навскидку накидал:

CREATE TABLE #temp (id int NOT NULL, tovar varchar(?), par_union varchar(255))

DECLARE @id int, @old int, @par varchar(?), @res_par varchar(255), @tovar varchar(?)
DECLARE #curs_temp CURSOR STATIC FORWARD_ONLY
FOR SELECT t1.id, t1.tovar, t2.parametr FROM table2 t2 INNER JOIN table1 t1 ON t1.id = t2.id ORDER BY t1.id
OPEN #curs_temp
SELECT @res_par = "", @old = 0
FETCH #curs_temp INTO @id, @tovar, @par
WHILE @@FETCH_STATUS = 0 BEGIN
IF @old <> @id BEGIN
IF @old <> 0
( id, tovar, par_union)
если в поле все-же числа в символьном виде, то:

select t1.id, t1.tovar, sum(CAST(t2.parametr AS int или numeric(?, ?))) as par_union
from table1 t1 inner join table2 t2 on t1.id = t2.id
group by t1.id, t1.tovar

инчаче, если надо склеить строки, то вот навскидку накидал:

CREATE TABLE #temp (id int NOT NULL, tovar varchar(?), par_union varchar(255))

DECLARE @id int, @old int, @par varchar(?), @res_par varchar(255), @tovar varchar(?)
DECLARE #curs_temp CURSOR STATIC FORWARD_ONLY
FOR SELECT t1.id, t1.tovar, t2.parametr FROM table2 t2 INNER JOIN table1 t1 ON t1.id = t2.id ORDER BY t1.id
OPEN #curs_temp
SELECT @res_par = "", @old = 0
FETCH #curs_temp INTO @id, @tovar, @par
WHILE @@FETCH_STATUS = 0 BEGIN
IF @old <> @id BEGIN
IF @old <> 0
INSERT INTO #temp (id, tovar, par_union)
VALUES @id, @tovar, @res_par
SELECT @res_par = "", @old = @id
END
ELSE
SET @res_par = @res_par + @par
FETCH #curs_temp INTO @id, @tovar, @par
END
CLOSE #curs_temp
DEALLOCATE #curs_temp

SELECT * FROM #temp ORDER BY id
DROP TABLE #temp


 
gsvserg   (2003-08-08 16:51) [9]

Семен Сорокин © (08.08.03 16:15)
Кое что я конечно понял, но для меня это темный лес, я не знаю до такой степени SQL, поэтому лучше старым проверенным методом
с помощью adoquery и While not eof...
Всем спасибо...


 
Семен Сорокин   (2003-08-08 17:25) [10]

gsvserg © (08.08.03 16:51)
никогда не поздно немного подучиться :))



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

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

Наверх





Память: 0.47 MB
Время: 0.011 c
14-1595
pusrg
2003-08-13 16:11
2003.09.01
ШД - ЛОКО


1-1491
KSergey
2003-08-17 13:07
2003.09.01
Можно ли изменить шаблоны Code Complete?


6-1529
Benedict
2003-06-22 17:56
2003.09.01
Перехват клика по ссылке в браузере?


4-1712
vgb
2003-06-28 14:39
2003.09.01
CreateBitmap(...)


1-1417
DelphiNew
2003-08-19 15:51
2003.09.01
Печать





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский