webForumDet fria alternativet

Fastnat lite med datum..

6 svar · 221 visningar · startad av Joakim

JoakimMedlem sedan dec. 199982 inlägg
#1

Hej!

Har fastnat lite med ett problem.

Har en tabell med följande kollumner:
id, obj_id, date_start, date_end

Det handlar om att hyra ut utrustning och varje hyra läggs in i tabellen med ett unikt id, id för prylen som hyrs ut, startdatum för hyran samt slutdatum för hyran. Jag vill ha en fråga som ger de "obj_id" som inte är uthyrda eller kommer in under dagen, dvs där det inte finns något start- eller slutdatum som är högre än dagens datum.

Försöker åskådliggöra om ni inte förstod;

1, 1, 2003-03-01, 2003-03-02
2, 2, 2003-03-01, 2003-03-02
3, 3, 2003-02-24, 2003-03-01
4, 1, 2003-03-03, 2003-03-10
5, 2, 2003-03-03, 2003-03-03

Om jag kör frågan på dessa fem rader med tre olika "prylar" vill jag alltså ha returnerat obj_id 2 och 3 eftersom de antingen har en hyra som tar slut idag alt är hyresfria, dvs inga start/stopp-datum för det obj_id'et är större än dagens datum.

Det som försvårar för mig är att det i samma tabell finns gamla datum för vissa obj_id som jag får med i resultatet när jag försökt. Det jag är intresserad av är ju att titta på det senaste start/stop-datumen för varje obj_id och se om de är större än dagens datum eller inte.

Tack på förhand!

// Joakim

LarsGMedlem sedan dec. 200012 464 inlägg
#2
select obj_id from t
 where obj_id in (1,2,3)
 group by obj_id
 having max(slut_datum) <= current_date
JoakimMedlem sedan dec. 199982 inlägg
#3

Om det funnits ett nobellpris i sql skulle du fått det! =)

vad gör "where obj_id in (1,2,3)" rent konkret? sista raden var vad jag inte kommit fram till, letade efter nåt sätt att bara titta på de största värdena för varje obj_id, men tog till den snabba varianten istället, att fråga här =)

Tack!

LarsGMedlem sedan dec. 200012 464 inlägg
#4
obj_id in (1,2,3)

är bara en förkortning för

(obj_id = 1 or obj_id = 2 or obj_id = 3)
JoakimMedlem sedan dec. 199982 inlägg
#5

Dum fråga kanske, men hur är syntaxen om jag vill ha datumet inom ett intervall istället för ett enda datum? Har inte fått det att funka, har testat flera varianter, men den matchar ändå inte en post som jag vet skall matcha =) Säg dagens datum t.o.m. 2003-03-24.

LarsGMedlem sedan dec. 200012 464 inlägg
#6
select obj_id from t
 where obj_id in (1,2,3)
 group by obj_id
 having max(slut_datum) between current_date and '2003-03-24'
JoakimMedlem sedan dec. 199982 inlägg
#7

Man tackar.. testade med det men hade nog inte ' ' runt datumet =/

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