select * from evenemang where evenemang_id in
(select evenemang_id from avdelning where avdelning_id not in
(select distinct avdelning_id from bokningar))
kanske?
2 svar · 252 visningar · startad av jme
Hej.
Jag har tre tabeller:
evenemang:
-evenemang_id
avdelning:
-avdelning_id
-evenemang_id pekar mot evenemang.evenemang_id
bokningar:
-id
-evenemang_id pekar mto evenemang.evenemang_id
-avdelning_id pekar mot avdelning.avdelning_id
Hur får jag ut alla de poster från tabellen evenemang som har MINST EN avdelning och som också måste vara ledig? Avdelningen är ledig om den inte finns inlaggd i tabellen bokningar (eller den får finnas i tabellen bokningar men då i en annan sammanhang).
T ex:
Evenemang 1 (med evenemang_id ev1) har två avdelningar:
- avd1
- avd2
Evenemang 2 (evd2) har:
-avd3
I tabellen bokningar finns följande post:
post #1
id : bok1
evenemang_id = ev1
avdelning_id = avd2
post #2:
id: bok2
evenemang_id = ev2
avdelning_id = avd3
Det betyder alltså att Evenemang 1 skall visas då den ännu har avd1 ledigt.
Evenemang 2 skall inte visas även om DEN HAR en avdelning MEN den är redan bokad och den har bara en avdelning.
Jag har stora problem med denna sql-fråga. Vore enormt tacksam för lite vägledning och ljus. :)
select * from evenemang where evenemang_id in
(select evenemang_id from avdelning where avdelning_id not in
(select distinct avdelning_id from bokningar))
kanske?
Kom själv på nästan samma lösning som du! :)
Jobbigt att det ska vara så svårt att lista ut. Det där var ju inte SÅ klurigt. :|
Måste dock ha med evenemang_id i subqueryn då en avdelning måste länka ihop med en viss evenemang. Med din query så får jag 0 returnerade poster.
Med följande
select * from evenemang where evenemang_id in
(select evenemang_id from avdelning where avdelning_id not in
(select distinct avdelning_id from bokningar where evenemang.evenemang_id = bokningar.evenemang_id) )
så verkar det fungera. Stort tack för hjälpen! :)