Неизвестный столбец «b.Hostname» в «on clause» - PullRequest
1 голос
/ 11 июля 2019

У меня следующий запрос MYSQL - попытка объединить 3 таблицы и найти уникальную информацию (данные)

SELECT a.LocationID, a.Model, a.SerialNum,a.Purpose, b.IP, a.Services,a.DeviceID, COUNT(a.Hostname)
FROM RefConnection.Equipment_Info a, RefConnection.Connections b, RefConnection.VM_Info c
JOIN Equipment_Info on b.Hostname = a.Hostname
WHERE a.Hostname = c.Hostname
  AND b.status = a.Status
  AND a.status = c.Status
GROUP BY a.LocationID, a.Model, a.SerialNum, a.Purpose, b.IP, a.Services, a.DeviceID
ORDER BY COUNT(b.Hostname)DESC;

Это работает с 2 таблицами:

SELECT d.locationID, d.Model, d.SerialNum, d.Status, da.IP, COUNT(d.HOSTNAME)
FROM RefConnection.Equipment_Info d, RefConnection.Connections da
WHERE d.Hostname = da.Hostname
  AND d.Status = da.Status
Group By d.locationID, d.Model, d.locationID, d.Model, d.SerialNum, d.Status, da.IP
ORDER BY COUNT(da.Hostname) DESC;

Неизвестный столбец 'b.Hostname 'in' on clause '

1 Ответ

1 голос
/ 11 июля 2019

Никогда не используйте запятые в предложении FROM. Всегда используйте правильный, явный, стандартный JOIN синтаксис.

FROM RefConnection.Equipment_Info a JOIN
     RefConnection.Connections b
     ON b.Hostname = a.Hostname AND
        b.status = a.Status JOIN
     RefConnection.VM_Info c
     ON a.Hostname = c.Hostname AND
        a.status = c.Status

Ваша проблема заключается в правилах определения области действия для идентификаторов.Это не работает, как вы ожидаете, с запятыми - еще одна причина избегать их.

Я не знаю, что Equipment_Info делает во второй раз в запросе.

Я бытакже настоятельно рекомендуем использовать значимые псевдонимы таблиц, например e, c и i, а не произвольные символы.

...