Avatar billede ameq Nybegynder
31. marts 2005 - 10:11 Der er 9 kommentarer og
1 løsning

If i min select sætting

Hej jeg sider og arbejder med et select sætting hvor jeg har brug for at test om en bit (@er_administratoter) er sand eller ej, min ide var select * from [tabel] where navn = [@et_eller_andet_navn]
if @er_administratoter
begin
and id = [@et_eller_andet_id]
and
end

men andre ord jeg vil godt bruge lidt ala IsNull funktion, men skal bare kunne test på en variabel hvis sand så indsætte en anden variabel
Avatar billede ldanielsen Nybegynder
31. marts 2005 - 10:28 #1
Du kan bruge CASE:


SELECT  Felt1, Felt2
ID =
    CASE @er_administratoter
        WHEN 1 THEN @Et_eller_andet_ID
        WHEN 0 THEN @Et_andet_ID
        ELSE NULL
      END, Felt4
FROM Tabel WHERE navn = @et_eller_andet_navn
Avatar billede ameq Nybegynder
31. marts 2005 - 10:34 #2
super, jeg vil lige sætte mig og arbejde med det =)
Avatar billede ameq Nybegynder
31. marts 2005 - 10:37 #3
men blever det også ligesom når jeg skrivet det i en where?
Avatar billede ldanielsen Nybegynder
31. marts 2005 - 11:46 #4
Jeg mener ikke at du kan bruge CASE i en WHERE Clause.

Kan du ikke lave to statements, et statement der henter værdien, evt med CASE, og selve din SELECT bagefter?
Avatar billede ameq Nybegynder
31. marts 2005 - 12:13 #5
Kan du ikke lave to statements, et statement der henter værdien, evt med CASE, og selve din SELECT bagefter? <- neeej jeg har en del ting som jeg tester på.

Men det eks. du skrev der laver jeg en "ny" kolonne og sætter den "case" værdi. Det var ikke lige det jeg ledte efter.
Men så blever det nok over i at jeg skal ned i min where.

DECLARE @Er_admin bit
set @Er_admin = 1

  select hold_id,
  aktiveret =
  case @Er_Admin
    when 0 then 0
    else null
  end
  from hold

i det her eks. der ville godt havde alle aktiveret hold med hvis Er_admin er sand
Avatar billede ameq Nybegynder
01. april 2005 - 09:21 #6
...
Avatar billede ameq Nybegynder
01. april 2005 - 10:21 #7
jeg har lavet det er, jeg ved godt at symtaxen er af H til men vil tror det forklare mit problem okey

Tabellen ”Hold”
Id, Hold_Navn, Aktiveret, Spil_Id
--------------------------------------

@Er_Admin = 0
@Søg_Efter_Spil_Id = 1
@Spil_Id = 13
@Søg_Efter_Bogstav = 1
@Bogstav = ’A’


Select * from hold where
If @Er_Admin = 0 Then
Aktiveret = 1
End if
If @Søg_Efter_Spil_Id = 1 Then
Spil_Id = @Spil_Id
End if
If @Søg_Efter_Bogstav = 1 Then
Hold_Navn like @Bogstav%
End if
Avatar billede ameq Nybegynder
04. april 2005 - 08:11 #8
...
Avatar billede dbangx Nybegynder
04. april 2005 - 10:44 #9
det nemmeste er da at lave to statements: således:


if @er_administratoter = 1 begin
select * from [tabel] where navn = [@et_eller_andet_navn] and id = [@et_eller_andet_id]
end
if @er_administratoter = 0 begin
select noget andet
end
Avatar billede ameq Nybegynder
04. april 2005 - 14:32 #10
ja dbangx, men den holder bare ikke hvis man har en 3 variabler

men jeg har fået lavet det her
DECLARE @Hold_Navn varchar(50),
@Spil_Id int,
@Vis_Aktiveret bit,

@Soeg_Efter_Hold_Navn bit,
@Soeg_efter_Spil_Id bit,

@Input_Hold_Navn varchar(50),
@Input_Spil_Id int,
@Input_Er_Admin bit

--- Søg efter ---
set @Soeg_Efter_Hold_Navn = 0
set @Soeg_Efter_Spil_Id = 1

--- Input ---
set @Input_Hold_Navn = 'M'
set @Input_Spil_Id = 1
set @Input_Er_Admin = 0

if @Soeg_Efter_Hold_Navn = 1
Begin
  set @Hold_Navn = @Input_Hold_Navn
End
Else
Begin
  set @Hold_Navn = null
End

if @Soeg_Efter_Spil_Id = 1
Begin
  set @Spil_Id = @Input_Spil_Id
End
Else
Begin
  set @Spil_Id = null
End

if @Input_Er_Admin = 1
Begin
  set @Vis_Aktiveret = null
End
Else
Begin
  set @Vis_Aktiveret = 1
End
 
select * from hold
where
Navn like IsNull('[' + @Hold_Navn + ']%','%[' + Navn + ']%')
and Spil_Id = IsNull(@Spil_Id, Spil_Id)
and Aktiveret = IsNull(@Vis_Aktiveret,Aktiveret)
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