vet inte om följande kod löser det.
select
o.order_id
from
orders_services as os
join orders as o
on o.order_id=os.order_id
where
sum(os.amount) < 10
group
by os.order_id
8 svar · 538 visningar · startad av jme
Jag har följande tables: orders, services och orders_services.
orders:
order_id
services:
service_id
orders_services:
order_id
service_id
amount
Exempeldata:
orders:
post #1: order_id = 5
post #2: order_id = 6
post #3: order_id = 7
services:
post #1: service_id = 1
post #2: service_id = 2
post #3: service_id = 3
orders_services:
post #1: order_id = 5, service_id = 1, amount = 4
post #2: order_id = 5, service_id = 2, amount = 10
post #3: order_id = 6, service_id = 2, amount = 1
post #4: order_id = 6, service_id = 3, amount = 2
post #5: order_id = 7, service_id = 1, amount = 4
Jag vill få ut alla de poster från orders, som har poster i orders_service och där sum(amount) < 10.
Resultaten enligt exempeldatan:
post #2 (orders) (summa: 3 -> 1 + 2)
post #3 (orders) (summa: 4)
post #1 ger en summa på 14 (4 + 10) så den får inte inkluderas i resultatet
Är detta möjligt att göra med en(1) SQL-sats? Jag kör med MySql.
vet inte om följande kod löser det.
select
o.order_id
from
orders_services as os
join orders as o
on o.order_id=os.order_id
where
sum(os.amount) < 10
group
by os.order_id
Man får väl inte använda SUM() i WHERE-satsen?
får man inte?
testa det, fungerar det inte så kan du testa följande
select
o.order_id
sum(os.amount) as OSA
from
orders_services as os
join orders as o
on o.order_id=os.order_id
where
OSA < 10
group
by os.order_id
testade du den första lösningen?
där SUM() fanns i where-satsen
Jo och det fungerade inte.
select o.order_id
from orders_services as os join orders as o
on o.order_id=os.order_id
group by os.order_id
having sum(os.amount) < 10
LarsG: din version fungerar, tack!