J'ai ces tables:groupe par défi de requête
customer
--------
customer_id int
name varchar(255)
order
-----
order_id int
customer_id int
discount boolean
Je peux obtenir le nombre de commandes effectuées par chaque client avec une requête comme:
select c.id, count(o.order_id)
from customer c
left join order as o using c.customer_id = o.customer_id
group by 1
Sinon, je peux obtenir le nombre de commandes actualisées faites par chaque client avec:
select c.id, count(o.order_id)
from customer c
left join order as o using c.customer_id = o.customer_id and o.discount = true
group by 1
Mais je ne peux pas trouver un moyen d'obtenir les deux dans une seule requête. J'ai essayé ce qui suit:
select c.id, count(o.order_id), count(o2.order_id)
from customer c
left join order as o using c.customer_id = o.customer_id
left join order as o2 using c.customer_id = o2.customer_id and o2.discount = true
group by 1
Mais cela n'a pas fonctionné. Est-il possible de calculer les deux en une seule requête (MySql)?
Cheers, Don
Dans les systèmes qui ne sont pas la fonction SI, une expression CASE dolby La fonction peut être utilisée à la place. –
Vous avez raison, CASE est plus standard SQL, mais l'OP dit qu'il utilise MySQL, qui supporte la fonction IF(). –