webForumDet fria alternativet

Store procedure

Databaser & SQLur Databashanterare & SQL

7 svar · 215 visningar · startad av KalsongCesar

Medlem sedan mars 2001339 inlägg
Frågan#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

Medlem sedan dec. 200012 464 inlägg
#2
where (area1 = 1 or @area1 = 0)
    and (area2 = 1 or @area2 = 0)
    and (area3 = 1 or @area3 = 0)
Medlem sedan mars 2001339 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.

Medlem sedan dec. 200012 464 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)
Medlem sedan mars 2001339 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

Medlem sedan mars 2001339 inlägg
#6

Fixade problemet...

Tack ändå.

Medlem sedan dec. 200012 464 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.

Medlem sedan mars 2001339 inlägg
#8

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

Tackar. :birp

131 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)