Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


IF och WHERE

Postades av 2004-01-23 21:33:47 - Karl Adriansson, i forum sql-server/msde, Tråden har 7 Kommentarer och lästs av 811 personer

Hej!

Jag har en SQL sats där jag i vissa fall vill köra två WHERE vilkor, antingen var för sig, båda två eller ingen av dem.

Har testat lite med både IF och CASE men får det inte att inte riktigt att funka. Någon som kan hjälpa mig lite på traven?

//Kalle



Svara

Sv: IF och WHERE

Postades av 2004-01-24 12:05:31 - Jörgen Lindroos

Vad exakt vill du göra? Det är inga problem att köra 2 Where-villkor.
Det är bara att använda AND: Select * From tabell Where Villkor1 And Villkor2.

Är det det du menar?
/Jörgen


Svara

Sv: IF och WHERE

Postades av 2004-01-24 13:14:23 - Raderat konto

Jo visst men det var lite krångligare än så ;)

Jag ska lista upp ett antal objekt på sidan. Varje objekt kan antingen vara raderat, dolt eller helt vanligt.

Jag har två selectlistor där man för raderad och dold ska kunna välja typ "Alla", "Endast raderade" och "Endast ej raderade" sen samma sak för det dolda alternativet.

När jag sedan ska skriva sql satsen så ska ju where villkoret endast ställas om inte "alla".

Jag skulle vilja ha all sql kod i en SP så därför är det ju lite svårt att bygga upp frågan från asp koden.

Kanske lite dåligt förklarat. Annars kan jag nog slänga ihopp ett lite bättre exempel...

//Kalle


Svara

Sv: IF och WHERE

Postades av 2004-01-24 15:29:08 - Karl Adriansson

Njae, riktigt så enkelt var det inte ;)

Jag har ett antal olika parametrar där man ska kunna välja mellan de tre alternativen "Spelar ingen roll", "Ja", "Nej". Detta kan t.ex. vara raderade eller synlig.

När jag sedan ska köra sql frågan och jag och användaren har valt att raderade poster (markerad med en deleted flagga i tabellen så de finns ju kvar men visas inte på siten) ska listas ska wheresatsen finnas med men om första alternativet ("spelar ingen roll") är vald ska ju inget where villkor ställas.

Idag har jag två olika val som detta problem uppstår med men det kan i framtiden bli fler.

Hänger du med mer på vad mitt problem är nu?

//Kalle


Svara

Sv: IF och WHERE

Postades av 2004-01-24 18:23:48 - Per Hultqvist

Det framgår inte riktigt vilken typ av lösning du vill ha. Använder du en Stored Procedure? Eller snickrar du ihop SQL-satsen i t ex VB eller annat programspråk?

I t ex VB så kan du göra så här :
<code>
Dim StrSql As String
Dim strWhere As String
If IncludeDeleted=0 Then ' Don't care
strWhere=""
Else If IncludeDeleted=1 Then ' Endast deleted
strWhere=" Deleted=1"
Else
strWhere=" Deleted=0"
End if

strSQL="SELECT * FROM [Tabellnamn]"
If strWhere<>"" Then strSQL=strSQL & " WHERE " & strWhere
</code>
Om du jobbar med en Stored Procedure så kan det se ut så här :
<code>
CREATE PROCEDURE GetItems
@IncludeDeleted int
AS
DECLARE strWhere varchar(1024)
IF @IncludeDeleted=0
BEGIN
strWhere=''
END
ELSE IF @IncludeDeleted
BEGIN
strWhere=' WHERE Deleted=1 '
END
ELSE
BEGIN
strWhere=' WHERE Deleted=0 '
END
DECLARE strSQL varchar(8000)
SET strSQL='SELECT * FROM [TableName] ' + strWhere
EXEC (StrSQL)

GO
</code>

Det är säkert en massa småfel i koden, men ungefär så kan du göra. Det finns andra lösningar, t ex att skicka in strWhere som en parameter till StoredProceduren.


Svara

Sv: IF och WHERE

Postades av 2004-01-25 00:07:46 - Karl Adriansson

Använder en SP och det är i den jag vill ställa if-satsen.

Att man kunde använda exec för att köra selects osv var faktistk mer än vad jag viste... har tittat på sp_execsql eller vad den nu heter tidigare men inte riktigt fått det att funka som jag vill.

Ska titt anärmare på om det går bättr med att använda exec på måndag. Tackar för hjälpen så länge!


Svara

Sv: IF och WHERE

Postades av 2004-01-25 14:58:53 - Ola Lindfeldt

Om du gör execute i en sp förlorar du den fördelen med sp's att de förkompileras.

Om du vill inaktivera ett where-villkor kan du göra så här oxå:


select stuff
from table1
where ( stuff = @stuff and status=@status )
OR ( 1 = @boolNoFilter )



@boolNoFilter är en bit som du har som input.
Om du sätter den till 1 returneras alla poster oavsett de andra villkoren.
Eftersom 1 alltid är lika med 1 :)

/Ola


Svara

Sv: IF och WHERE

Postades av 2004-01-25 20:23:35 - Karl Adriansson

Nu börjar det likna nått som liknar det jag söker mer ;) Är mycket medveten om hur ful lösning det har varit att köra med EXEC(@sql) men detta verkar som sagt mycket bättre...

problemet är ju att ibland ska stuff vara med och ibland status och ibland båda. Men det borde ju gå att lösa med lite paranteser tycker jag, får sätta mig och testa lite och hoppas på det bästa ;)


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 619
27 953
271 709
484
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies