webForumDet fria alternativet

SQL sats, where

3 svar · 138 visningar · startad av Mac

MacMedlem sedan mars 200135 inlägg
#1

Jag undrar hur jag ska skriva för att ur en kolumn plocka ut värdet när det är antingen TA, eller AN. Och innan dess så vill jag ta med alla värden från en tidigare kolumn.

SELECT * FROM worklist WHERE employee LIKE '*' AND status='TA' OR status='AN' ORDER BY 'employee'"

När jag använder ovanstående kod så få fungerar *, jag får ut alla värden där, men jag får bara ut de värden som är 'AN'. Tycker att det är extra skumt eftersom det ligger sist.
Förslag?

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Lite precedensproblem, då and evalueras före or.


SELECT * FROM worklist WHERE status in ('TA','AN') ORDER BY employee

Ditt like villkor förstår jag inte. Om du vill ha alla värden så behövs det inget villkor alls.

------------------
essentitia preter non sans multiplicandum

MacMedlem sedan mars 200135 inlägg
#3

Tackar.
Anledningen till att jag har med * är att jag ibland vill se en specifik employee och ibland alla. Om jag skriver where='namn' så går det men det funkar inte med where='*', då måste man ha where LIKE '*'.
Förslag igen :)?

[Redigerat av Mac den 14 mar 2001]

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Jo, men det jag menar är om du ändå bygger ihop strängen dynamiskt så kan du väl utelämna likevillkoret om employee är tomt. Dvs (jag vet inte vad du använder för gränssnitt så jag använder VB)

  if  len(employee) = 0 then
      sqlstr = "SELECT * FROM worklist WHERE status in ('TA','AN') ORDER BY employee"
  else
      sqlstr = "SELECT * FROM worklist WHERE status in ('TA','AN') AND EMPLOYEE = '" & employee & "' ORDER BY employee"
  end if

------------------
essentitia preter non sans multiplicandum

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