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

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

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 18:43 28.09.24 
Компютри и Интернет
   >> Бази данни
Всички теми Следваща тема *Кратък преглед

Тема сега я закъсах?нови  
Автор Topбaлaн (любопитко)
Публикувано07.02.03 14:20



$strSql = "(SELECT 'I' AS 'Miasto', I AS 'snimka' FROM votes) ".
"UNION ".
"(SELECT 'II' AS 'Miasto', II AS 'snimka' FROM votes) ".
"UNION ".
"(SELECT 'III' AS 'Miasto', III AS 'snimka' FROM votes)";
гледам, гледам, пак гледам....и все вярно ми изглежда...

таблицата има следната структура
user_id, i, ii, iii
където i, ii, iii са избора на юзера за първо второ и трето място от една група снимки...записвам заглавието на снимката...

сега трябва да преброя гласовете и се опитвам да ги подредя в колонка

искам да се получи следното:

място, снимка
I, алабала
I, джиджи биджи
II, djerijfri
II, ijrjrjr
.......

като се надявап после лесно да сумирам гласовете...с GROUP BY и прочие....

пропуснах,
съобщението е Invalid query...........

Редактирано от Topбaлaн на 07.02.03 15:17.



Тема Re: сега я закъсах?нови [re: Topбaлaн]  
Авторzyl_oiliuff (Нерегистриран)
Публикувано07.02.03 16:27



защо не пробваш да го направиш с 3 джойна от тази таблица пак към нея като във всеки един от тях правиш операциите за съответното 'място'

веднъж писах подобна простотия която броеше 5 пъти върху една и съща таблица при различни условия и резултата трябваше да е един ред със 5 колони за съответните преброявания...



Тема 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



Тема Re: sybase (and ms sql) solutionнови [re: baj L\bo]  
Автор Topбaлaн (любопитко)
Публикувано07.02.03 21:36



user_id ми е укинаклно...демек всеки юзер може да гласува по веднъж за първо второ и трето място...
то по същество това няма никакво значение май...)

ама признавам си на първо четене нищо не разбрах...сга ще чета по задълбочено..))

след второто четене - ахам, ясно!

Редактирано от Topбaлaн на 07.02.03 21:42.



Тема Re: sybase (and ms sql) solution [re: Topбaлaн]  
Авторbaj L\bo (Нерегистриран)
Публикувано07.02.03 21:59



user_id-то както казваш няма никакво значение в случая. В примера ми са еднакви щото нали разбираш -- цопъ и пасте съм използвал силно.




Всички темиСледваща тема*Кратък преглед
Клуб :  


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

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