Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 09:16 28.06.24 
Клубове/ Компютри и Интернет / Бази данни Всички теми Следваща тема Пълен преглед*
Информация за клуба
Тема sybase (and ms sql) solution [re: Topбaлaн]
Авторbaj L\bo (Нерегистриран) 
Публикувано07.02.03 19:57  



Абе така като гледам искаш да класираш снимките. Долния пример го тествах на сайбейз и трябва да работи и на мс сял сервер (с незначителни промени).

За май сял дано поне идеята ти свърши работа:
create table #votes (
user_id int
, first char(10)
, second char (10)
, third char (10)
)
go
insert into #votes values (1,'a','b','c')
insert into #votes values (1,'b','c','a')
insert into #votes values (1,'b','c','d')
insert into #votes values (1,'e','d','c')
go
select * from #votes
go

-- naprawi niakak si spisak na snimkite
-- az sha go napravia "na raka"
create table #pictures (name char(10))
go
insert into #pictures values ('a')
insert into #pictures values ('b')
insert into #pictures values ('c')
insert into #pictures values ('d')
insert into #pictures values ('e')
-- f i g da rechem ne sa poluchili nikakwi glasove
insert into #pictures values ('f')
insert into #pictures values ('g')
select * from #pictures
go

-- sega procto broime za wsqka snimka kolko piti e bila
-- pyrwa, wtora i treta
-- Zabeleji she stawa s CASE operatora. Ako nqmash CASE v mysql,
-- vij "characteristic functions", koeto e ekvivalentno, no
-- adski nechitaemo
select
name
, first =sum (case v.first when p.name then 1 else 0 end )
, second=sum (case v.second when p.name then 1 else 0 end )
, third =sum (case v.third when p.name then 1 else 0 end )
from #votes v, #pictures p
group by p.name
go
-- ako reshish da davash da rechem po
-- 3 tochki za 1-vo miasto,
-- 2 tochki za 1-vo miasto i
-- 1 tochki za 1-vo miasto
--i da smiatah total, poslednia select stava:
select
name
, first =sum (case v.first when p.name then 1 else 0 end )
, second=sum (case v.second when p.name then 1 else 0 end )
, third =sum (case v.third when p.name then 1 else 0 end )
, total =sum (case v.first when p.name then 3 else 0 end )
+sum (case v.second when p.name then 2 else 0 end )
+sum (case v.third when p.name then 1 else 0 end )
from #votes v, #pictures p
group by p.name order by total desc
go

и това като се изпълни дава:
----------- ---------- ---------- ----------
1 a b c
1 b c a
1 b c d
1 e d c


name
----------
a
b
c
d
e
f
g

(7 rows affected)
name first second third
---------- ----------- ----------- -----------
a 1 0 1
b 2 1 0
c 0 2 2
d 0 1 1
e 1 0 0
f 0 0 0
g 0 0 0

(7 rows affected)
name first second third total
---------- ----------- ----------- ----------- -----------
b 2 1 0 8
c 0 2 2 6
a 1 0 1 4
d 0 1 1 3
e 1 0 0 3
f 0 0 0 0
g 0 0 0 0



Цялата тема
ТемаАвторПубликувано
* сега я закъсах? Topбaлaн   07.02.03 14:20
. * Re: сега я закъсах? zyl_oiliuff   07.02.03 16:27
. * sybase (and ms sql) solution baj L\bo   07.02.03 19:57
. * Re: sybase (and ms sql) solution Topбaлaн   07.02.03 21:36
. * Re: sybase (and ms sql) solution baj L\bo   07.02.03 21:59
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.