MYSQL - Использование GROUP с JOIN - PullRequest
0 голосов
/ 26 октября 2018

Итак, этот оператор начинался без объединения, он просто просматривал таблицы продуктов и группировал результаты по номеру элемента.

SELECT a.item_code,
       a.price,
       b.v_no
FROM product a
JOIN variation b ON a.item_code = b.item_code
WHERE a.price>=2
GROUP BY a.item_code

Теперь, когда я добавил соединение, я хочу сгруппировать по v_no, но ТОЛЬКО еслиДанные v_no существуют.Это связано с тем, что не каждый элемент из таблицы product имеет соответствующую запись в таблице variation.Таким образом, группируйте по item_code для «нормальных» продуктов, но группируйте по v_no THEN item_code, если существует v_no.

Нижеследующее не работает:

SELECT a.item_code,
       a.price,
       b.v_no
FROM product a
JOIN variation b ON a.item_code = b.item_code
WHERE a.price>=2
GROUP BY b.v_no,
         a.item_code

Группировка item_code сохраняется, но группировка v_no игнорируется.

1 Ответ

0 голосов
/ 26 октября 2018
  • Чтобы рассмотреть все продукты (с / без вариаций), вам нужно изменить значение на LEFT JOIN.
  • . Для условной группировки «Группой» можно использовать Coalesce() функция;будет учитываться первое ненулевое значение для группировки при.

Попробуйте выполнить следующее:

SELECT a.item_code,
       a.price,
       b.v_no
FROM   product a
       LEFT JOIN variation b
         ON a.item_code = b.item_code
WHERE  a.price >= 2
GROUP  BY COALESCE(b.v_no, a.item_code)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...