Я пытаюсь создать SQL-запрос, который использует одну таблицу для подсчета количества блейд-серверов, которые наша компания имеет в каждом шасси, и группирует их, объединяя его с информацией о шасси из другой таблицы.
Однако в одном из шасси нет лезвий, поэтому имя не отображается в таблице инвентаря лезвий. Использование ВНУТРЕННЕГО СОЕДИНЕНИЯ создает таблицу, которая не содержит этого блейда ни в каком качестве. ЛЕВОЕ СОЕДИНЕНИЕ дает тот же эффект, но ПРАВОЕ СОЕДИНЕНИЕ дает мне дополнительную строку с нулевым значением для имени шасси.
Я предполагаю, что это связано с тем, что отсутствие этого имени блейда в первой таблице имеет приоритет над второй, но не уверен, как это исправить. Мой запрос на данный момент выглядит так:
SELECT e.EnclosureName, e.PDUName, q.Blades, r.Serial#
FROM bladeinventory.table e JOIN
(
SELECT EnclosureName,COUNT(*) Blades
FROM bladeinventory.table
GROUP BY EnclosureName
) q ON e.EnclosureName = q.EnclosureName
LEFT JOIN chassisinventory.table r
ON e.EnclosureName = r.EnclosureName
GROUP BY e.EnclosureName, e.PDUName, q.Blades, r.Serial#
Можно ли отредактировать это таким образом, чтобы запрос действительно генерировал имя шасси с 0 лезвиями?