Chcę uzyskać 4 rodzaje liczy na podstawie typu, ponieważ mam 4 indywidualne zapytania, ale chcę używać tylko jednego zapytania, aby uzyskać wszystkie 4 liczniki na raz.

Zapytanie 1:

SELECT count(*) as totalCount FROM orders INNER JOIN order_view ON orders.id= order_view.id 
WHERE order_view.order_type = 'Type1'

Query 2:

SELECT count(*) as totalCount FROM orders INNER JOIN order_view ON orders.id= order_view.id 
WHERE order_view.order_type = 'Type2'

Query 3:

SELECT count(*) as totalCount FROM orders INNER JOIN order_view ON orders.id= order_view.id 
WHERE order_view.order_type = 'Type3'

Query 4:

SELECT count(*) as totalCount FROM orders INNER JOIN order_view ON orders.id= order_view.id 
WHERE order_view.order_type = 'Type4'

Szukam zapytania przez sequelizację i nie można znaleźć żadnej dokumentacji.

1
swamy 13 październik 2020, 18:12

1 odpowiedź

Najlepsza odpowiedź

Użyj agregacji warunkowej:

select 
    sum(ov.order_type = 'type1') as totalcount1,
    sum(ov.order_type = 'type2') as totalcount2
    sum(ov.order_type = 'type3') as totalcount3
    sum(ov.order_type = 'type4') as totalcount4
from orders o
inner join order_view on o.id = ov.id 
where ov.order_type in ('type1', 'type2', 'type3', 'type4')

Nie jest jasne, dlaczego potrzebujesz tabeli orders w zapytaniu. To może po prostu zrobić to, co chcesz:

select 
    sum(ov.order_type = 'type1') as totalcount1,
    sum(ov.order_type = 'type2') as totalcount2
    sum(ov.order_type = 'type3') as totalcount3
    sum(ov.order_type = 'type4') as totalcount4
from order_view
where ov.order_type in ('type1', 'type2', 'type3', 'type4')
1
GMB 13 październik 2020, 15:16