Соединить две таблицы с конкретными условиями в MySQL - PullRequest
0 голосов
/ 22 мая 2019

у меня два стола

Таблица 1: (пользователь) id, имя, имя пользователя, пароль

таблица 2: (заказ) id, пользователь, статус

статус столбец имеют два значения: 1 (отменить заказ) или 2 (успешный заказ)

Я хочу показать всех пользователей список с количеством заказов, равным заказов (количество заказов только для успешного заказа)

Я пишу это sql:

  select `user`.* , count(`sale`.`user`) as 'orders'
  from `user` 
  left join `sale`
      on `sale`.`user` = `user`.`id`
  where `user`.`type` = 'customer'
    and (`sale`.`status` IS NULL OR `sale`.`status` = 2)
  group by `user`.`id`
  order by `user`.`id` DESC 

в этом запросе, если у пользователя нет ни одного заказа, или у него есть успешный заказ, который отображается в результате

, но если пользователь отменил заказ, результат не отображается

Я хочу показать всех пользователей в результате с колонкой заказов

Если статус заказа равен 2, столбец заказа показывает количество успешных заказов

Если статус заказа равен 1 или равен нулю (у пользователя нет заказа) в столбце заказа отображается 0 счет

Заранее спасибо

1 Ответ

2 голосов
/ 22 мая 2019

Переместите условие на status в предложение on:

  select u.* , count(s.user) as orders
  from `user` u left join
       sale s
        on s.`user` = u.id AND s.status = 2
  where u.`type` = 'customer'
  group by u.id  -- ok, assuming id is unique
  order by u.id  DESC 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...