Avatar billede mikkel_strack Nybegynder
18. januar 2008 - 14:43 Der er 2 kommentarer og
1 løsning

Stored Procedure - kan dette gøres smart

Jeg er ingen ørn til sproc, så har brug for lidt inspiration til nedestånde lille problemstilling :)

Har en tabel [test_table] som har attributterne id, type, name.
type kan ha værdien 1,2 eller 3

Jeg har brug for at lave et recordset hvor den henter rækker hvor type er:
1 + 3
2 + 3
1 + 2 + 3

Kan dette gøres på en smart måde, ved brug af kun en enkelt parameter?


CREATE PROCEDURE [dbo].[Test]
@Type INT

AS
BEGIN

SELECT [type],[name]
FROM [test_table]
WHERE ????

END

Mvh. Mikkel
Avatar billede hrc Mester
18. januar 2008 - 23:10 #1
Kan du ikke bare tage summen af test til at differentiere?

Noget i retning af dette

if @Type = 4
  select type, name from test_table where type in (1,3)
else if @type = 5
  select type, name from test_table where type in (2,3)
else if @type = 6
  select type, name from test_table where type in (1,2,3)

... hvis altså jeg har forstået dig korrekt.
Avatar billede mikkel_strack Nybegynder
21. januar 2008 - 16:01 #2
Hej hrc

Nu er min sproc et giga join, hvilket betyder at det på ovenstående måde ville komme til at fylde en krig. Jeg ved ikke hvor meget den slags betyder, men umiddelbart tænker jeg at det ikke er så yndigt som det burde.

Er der mulighed for at lave noget if, else inde midt i?
Fx.
select bla bla bla
from bla bla
if @type = 1
    where blabla
else if @type = 2
    where bla bla
Avatar billede mikkel_strack Nybegynder
18. august 2010 - 13:07 #3
Lukker gamle ubesvarede spørgsmål
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester