Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день всем!
Задача такая: есть 3 таблицы. В одной перечень устройств, в другой название параметра, а в третей их параметры. Нужно вывести список устройств с названием параметра у которых значение параметра одинаковые с указанием значения параметров.
table_1 - находятся перечень устройств. Есть поля - object_id, object_type_id и name
table_2 - находятся параметры этих устройств. Есть поля - atr_id, object_type_id и name
table_3 - находятся значения этих параметров. Есть поля - atr_id, object_type_id и value
Выполняю следующий запрос:
SELECT 1.object_id, 1.name, 2name, 3.value, COUNT(3.value)
FROM table_1 1 --выбираю устройства
JOIN table_2 2 -- соединяю с нужным параметром
ON (1.object_type_id=2.object_type_id AND 1.object_type_id=5 AND 2.atr_id=10) --соединяю по одинаковому значению типа типа устройства, где 1.object_type_id=5 - тип устройства AND 2.atr_id=10 - нцжный параметр
LEFT JOIN table_3 3 --соединяю с нужным значением параметра
ON (1.object_id=3.object_id AND 3.atr_id=10)
group BY 3.value -- группирую по одинаковому значению параметра
HAVING COUNT(3.value) > 1 --проверяю где совпадают значения параметров
Проблема в том, что выводит склеенный список устройств и параметр по которому они совпали, а нужно вывести перечень устройств.
Вывод должен быть в таком виде:
object_id 1 - устройство 1 - параметр 10 - значение 123
object_id 2 - устройство 2 - параметр 10 - значение 123
object_id 15 - устройство 15 - параметр 10 - значение 123.
Помогите пожалуйста исправить запрос, чтобы выводились все устройства, а не склеенный список.
Заранее благодарен!
Отредактированно Maverick84 (01.08.2015 14:15:23)
Неактивен
Замените
Неактивен
Замечательно, как раз то что нужно. Пусть не список, но перечень тоже устраивает. Спасибо огромное за помощь!!!
Неактивен