SQL sats, where

Databaser & SQL

3 svar · 161 visningar · startad av Mac

Medlem sedan mars 200135 inlägg
Trådstart#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?

Medlem 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.

Medlem 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]

Medlem 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
251 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)