SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 01.08.2015 14:11:39

Maverick84
Участник
Зарегистрирован: 01.08.2015
Сообщений: 2

Не могу коректно выполнить выборку

Добрый день всем!

Задача такая: есть 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)

Неактивен

 

#2 02.08.2015 11:18:26

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Не могу коректно выполнить выборку

Замените

SELECT 1.object_id, 1.name

на
SELECT GROUP_CONCAT(1.object_id), GROUP_CONCAT(1.name)

Неактивен

 

#3 02.08.2015 19:41:23

Maverick84
Участник
Зарегистрирован: 01.08.2015
Сообщений: 2

Re: Не могу коректно выполнить выборку

Замечательно, как раз то что нужно. Пусть не список, но перечень тоже устраивает. Спасибо огромное за помощь!!!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson