Я работаю с 4 таблицами - Предметы, Хосты, История, Отображения
Предметы
hostid,itemid,name,valuemapid
10761,304827,Phone 33 44 55 66 77 88:Model of the Phone,68
10761,304827,Phone 33 44 55 66 77 88:Model of the Phone,68
10761,304827,Phone 33 44 55 66 77 88:Model of the Phone,68
10761,304828,Phone 33 44 55 66 88 88:Model of the Phone,68
10761,304828,Phone 33 44 55 66 88 88:Model of the Phone,68
10761,304828,Phone 33 44 55 66 88 88:Model of the Phone,68
10761,304829,Phone 33 44 55 77 77 88:Model of the Phone,68
10761,304829,Phone 33 44 55 77 77 88:Model of the Phone,68
10761,304820,Phone 33 44 44 66 77 88:Model of the Phone,72
10761,304820,Phone 33 44 44 66 77 88:Model of the Phone,72
Хосты
hostid,name
10761,CUCM2
история
itemid,value
304827,109
304828,109
304829,109
304829.110
mappings
valuemapid,value,newvalue
68,109,Cisco 7841
72,110,Cisco 7940
Я написал запрос, чтобы дать мне модель телефона и счет для этой модели, но он подсчитывает дубликаты.Мне сказали, что мне нужно добавить INNER JOIN, но я не знаю, как это сделать.Может ли кто-нибудь помочь мне изменить мой запрос на ВНУТРЕННЕЕ СОЕДИНЕНИЕ для таблицы «Элементы», чтобы удалить все дубликаты ItemID.
SELECT map.newvalue as 'Model of Phone', Count(*) as 'Number of Phones'
FROM items i, hosts h, history huint, mappings map
WHERE h.hostid=i.hostid AND h.name='$Hosts' AND i.itemid=huint.itemid AND i.valuemapid=map.valuemapid AND huint.value=map.value AND i.name LIKE '%Model of the Phone'
GROUP BY map.newvalue
LIMIT 100;
Возвращает
Model of Phone, Number of Phones
Cisco 7841, 8
Cisco 7940, 2
Спасибо!
** ОБНОВЛЕНИЕ ** Использование LEFT JOIN, но не могу понять, как использовать DISTINCT
SELECT map.newvalue as 'Model of Phone', Count(*) as 'Number of Phones'
FROM hosts h
LEFT JOIN items i
ON h.hostid=i.hostid
LEFT JOIN history_uint huint
ON i.itemid=huint.itemid
LEFT JOIN mappings map
ON i.valuemapid=map.valuemapid
WHERE h.name='$Hosts' AND huint.value=map.value AND i.name LIKE '%Model of the Phone'
GROUP BY map.newvalue
ORDER BY 'Item Name' DESC
LIMIT 100;