MySQL сложный выбор только с одной таблицей
Вот моя структура таблицы:
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,lead_id INT NOT NULL
,form INT NOT NULL
,value VARCHAR(20) NOT NULL
,field_no INT NOT NULL
);
INSERT INTO my_table VALUES
( 1 ,1 ,1 ,'John' ,5),
( 2 ,1 ,1 ,'Smith' ,6),
( 3 ,1 ,1 ,'987654321',3),
( 4, 2 ,1 ,'Sam' ,5),
( 5 ,2 ,1 ,'Long' ,6),
( 6 ,2 ,1 ,'42254545' ,3),
( 7 ,3 ,2 ,'23' ,12),
( 8 ,3 ,2 ,'Foo' ,5),
( 9 ,3 ,2 ,'Bar' ,3),
(10 ,4 ,1 ,'Simon' ,5),
(11 ,4 ,1 ,'Rhodes' ,6),
(12 ,4 ,1 ,'659874' ,3);
Можно ли выбрать следующее только в одном операторе SELECT:
Строка результата 1: "Джон Смит", "987654321"
Строка результата 2: "Сэм Лонг", "42254545"
Строка результата 3: "Саймон Роудс", "659874"
то есть. Если бы это было в ОДНОЙ строке, выбор был бы:
ВЫБЕРИТЕ КОНКАТ (Имя, "", Фамилия) как fullname
, employeeNo из таблицы A WHERE form = "1" группа от lead_id
Пожалуйста помоги
1 ответ
Решение
Это просто базовая модель EAV
SELECT lead_id
, MAX(CASE WHEN field_no = 5 THEN value END) firstname
, MAX(CASE WHEN field_no = 6 THEN value END) lastname
, MAX(CASE WHEN field_no = 3 THEN value END) telephone
, MAX(CASE WHEN field_no = 12 THEN value END) number
FROM my_table
GROUP
BY lead_id;