Pomoc s SQL dotazem

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
Dony
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 29. říj 2003
Bydliště: okr. Mělník

Pomoc s SQL dotazem

Příspěvek od Dony »

Mam tabulku, ktera vypada nejak takhle...

Jmeno Server Pocet
---------------------------
jm1 s1 1
jm2 s1 3
jm1 s2 2
jm1 s3 1
jm2 s2 2
jm1 s3 3
.
.
.

a potreboval bych z toho dostat neco takoveho...

jmeno s1 s2 s3
--------------------------
jm1 1 2 4
jm2 3 2
.
.
.

da se to nejak primo SQL dotazem? (tohle uz je za hranici mych znalosti SQL... :( )
Obrázek Avatar tancuje, nechce se mu na záchod... :) Windows Vista je tady, řekněte "WTF" :D
miho
Čestný člen
Čestný člen
Registrován: 29. kvě 2003
Bydliště: Orlová-Lutyně

Příspěvek od miho »

Napis pro jaky SQL server.
127.0.0.1, sweet 127.0.0.1
Dony
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 29. říj 2003
Bydliště: okr. Mělník

Příspěvek od Dony »

MS SQL 2000
Obrázek Avatar tancuje, nechce se mu na záchod... :) Windows Vista je tady, řekněte "WTF" :D
miho
Čestný člen
Čestný člen
Registrován: 29. kvě 2003
Bydliště: Orlová-Lutyně

Příspěvek od miho »

Ano, tam v MS SQL to udelas.

Navod: vytvoris temporary table. Vyselektujes distinct server. Procyklujes to pomoci kurzoru. Uvnitr kurzoru udelas neco takoveho

declare @SQL as varchar(100)

set @SQL ='alter table docasna add ' + @server + ' int'

execute(@SQL )

(musi to byt takto zbesile protoze dotaz

alter table docasna add @server int

MSSQL nesezere)

no a uz mas pripravenou tabulku. Pak uz jen procyklovat pres cely select * from tabulka, naplnit hodnoty v temp. table (opet se pouzije trik s poskladanim SQL v retezci) a tu na konci vyselektovat.

Trochu psycharna ale zvladnout se to da.
127.0.0.1, sweet 127.0.0.1
Dony
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 29. říj 2003
Bydliště: okr. Mělník

Příspěvek od Dony »

oops, to je na me nejak moc slozity... :?
miho píše:vytvoris temporary table.
...to bych nejak zvladnul

Kód: Vybrat vše

create table [dbo].[docasna]([UserName] [varchar] (32) NOT NULL)
miho píše:Vyselektujes distinct server.
select distinct... taky

ale cyklovani pomoci kurzoru mi tedy nic nerika :(
miho píše: Procyklujes to pomoci kurzoru. Uvnitr kurzoru udelas neco takoveho

declare @SQL as varchar(100)
set @SQL ='alter table docasna add ' + @server + ' int'
execute(@SQL )
Obrázek Avatar tancuje, nechce se mu na záchod... :) Windows Vista je tady, řekněte "WTF" :D
miho
Čestný člen
Čestný člen
Registrován: 29. kvě 2003
Bydliště: Orlová-Lutyně

Příspěvek od miho »

temporary table ma na zacatku nazvu #

Kuzror: query analyzer ma dost dobrou napovedu (Transact-SQL) tam najdes vse potrebne. Nakopnuti:

Kód: Vybrat vše

DECLARE @server as varchar(1000)
declare @SQL as varchar(1000)
DECLARE kurzor  CURSOR FOR SELECT distinct Server FROM tabulka
 
 OPEN kurzor  
 FETCH NEXT FROM kurzor INTO @Server
    WHILE (@@FETCH_STATUS = 0)
      BEGIN	


set @SQL ='alter table #docasna add ' + @server + ' int'
execute(@SQL ) 
 	
	
  	FETCH NEXT FROM kurzor  INTO @Server
     END
     CLOSE kurzor  
     DEALLOCATE kurzor

tak to mas udelany komplet ten prvni cyklus.
127.0.0.1, sweet 127.0.0.1
miho
Čestný člen
Čestný člen
Registrován: 29. kvě 2003
Bydliště: Orlová-Lutyně

Příspěvek od miho »

Ted jeste ten druhy:

Kód: Vybrat vše

DECLARE @jmeno as varchar(1000)
declare @pocet as int
DECLARE kurzor  CURSOR FOR SELECT jmeno,server,pocet FROM tabulka
 
 OPEN kurzor 
 FETCH NEXT FROM kurzor INTO @jmeno,@server,@pocet
    WHILE (@@FETCH_STATUS = 0)
      BEGIN   

if not exists(select 1 from #docasna where UserName=@jmeno)
begin
insert into #docasna(UserName) values(@jmeno)
end



set SQL='UPDATE #docasna SET ' + @server +'='+cast(@pocet as varchar(10))+' WHERE UserName='''+@jmeno+''''
execute(SQL)
    
   
     FETCH NEXT FROM kurzor  INTO @jmeno,@server,@pocet
     END
     CLOSE kurzor 
     DEALLOCATE kurzor
pisu to z fleku bez zkouseni takze tam budou urcite syntakticke chyby...
127.0.0.1, sweet 127.0.0.1
Dony
Středně pokročilý
Středně pokročilý
Uživatelský avatar
Registrován: 29. říj 2003
Bydliště: okr. Mělník

Příspěvek od Dony »

Super, diky moc, mas u me pivo :worship: , chyby tam byly jen dve, ted jeste jestli se mi povede do toho nacpat scitani :)

//Povedlo se, finished...
Obrázek Avatar tancuje, nechce se mu na záchod... :) Windows Vista je tady, řekněte "WTF" :D
Odpovědět

Zpět na „Programování a web“