webForumDet fria alternativet

Store procedure

7 svar · 215 visningar · startad av KalsongCesar

KalsongCesarMedlem sedan mars 2001338 inlägg
#1

Jag har en procedur som söker efter personer i databasen.

Nu har jag utökat den med att ha kryssrutor som markerar vilken typ av access personen har, vi kan säga area1, area2, area3 alla kan vara ikryssade eller bara en eller två.

När jag då vill söka efter de som har tillgång till area2 oavsett vilka de andra är så skickar jag med variablerna i min procedur.

Hur ska jag då få till min wheresats så att den hämtar alla som har area2 = 1 oavsett de andra.. de kommer med som area1=0 och area3 = 0

följande snutt löser ju inget.

where 
area1 = @area1 or area2 = @area2 or area3 = @area3

hoppas att det går att fixa smärtfritt
Jonas

LarsGMedlem sedan dec. 200012 465 inlägg
#2
where (area1 = 1 or @area1 = 0)
    and (area2 = 1 or @area2 = 0)
    and (area3 = 1 or @area3 = 0)
KalsongCesarMedlem sedan mars 2001338 inlägg
#3

Fungerar nästan som jag vill..

om personm har tillgång till area2 och area3 och jag vill lista alla som har tillgång till area2 eller area3 så kommer inte den personen med.

LarsGMedlem sedan dec. 200012 465 inlägg
#4
where (area1 = 1 and @area1 = 1) 
   or (area2 = 1 and @area2 = 1)
   or (area3 = 1 and @area3 = 1)
   or (@area1 + @area2 + @area3 = 0)
KalsongCesarMedlem sedan mars 2001338 inlägg
#5

Nu blir det maximalt antal träffar varje gång jag söker oavsett vilken area jag söker på.

Det måste ju vara ett vanligt sätt att söka rätt på personer?

Lista alla som uppfyller mina ikryssade rutor. Har försökt att ange ej ikryssad som 'null' eller ngt annat värde som inte finns i databasen men det går inte heller.

Hoppas det finns ngn där ute som kan hjälpa mig.. pliis

KalsongCesarMedlem sedan mars 2001338 inlägg
#6

Fixade problemet...

Tack ändå.

LarsGMedlem sedan dec. 200012 465 inlägg
#7

Jag har också kommit fram till en lösning

where   case when @area1 = 1 and @area1 = area1 then 1 else 0 end +
        case when @area2 = 1 and @area2 = area2 then 1 else 0 end +
        case when @area3 = 1 and @area3 = area3 then 1 else 0 end > 0
   or @area1 + @area2 + @area3 = 0

om någon nu bryr sig.

KalsongCesarMedlem sedan mars 2001338 inlägg
#8

Jag bryr mig.. hittade en bugg i min konstruktion och provade din. Och den funkar.. än så länge.

Tackar. :birp

Genererad på 378 ms · cache AV · v20260730165559-full.f96bc7eb