Я работаю над базой данных MySQL, которая похожа на эту
CREATE TABLE IF NOT EXISTS `tblcustomfieldsvalues` (
`fieldid` int(11) NOT NULL,
`relid` int(1) NOT NULL,
`values` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
, и пример данных, как показано ниже
INSERT INTO `tblcustomfieldsvalues`(`fieldid`, `relid`, `values`) VALUES
('396', '1', 'willyemail@gmail.com'),
('397', '1', 'willy robertus'),
('398', '1', 'Santo Paulus'),
('396', '2', 'antoni@gmail.com'),
('397', '2', 'Antoni robertus'),
('398', '2', 'Sasa Paulus');
, которые дают мне что-то вроде этого
Фактическое изображение данных
Мои цели:
Мне нужно преобразовать преобразование данных в разные столбцы для каждого отдельного fieldid
Скажем, я хочу, чтобы fieldid 396 был A столбец, 397 как B и идентификатор поля 398 как C столбец
Итак, данные выглядят так:
Ожидание
Но я получил что-то вроде этого
Я попробовал этоquery
select
relid,
case when fieldid = "396" then tblcustomfieldsvalues.values end as A,
case when fieldid = "397" then tblcustomfieldsvalues.values end as B,
case when fieldid = "398" then tblcustomfieldsvalues.values end as C
from tblcustomfieldsvalues
Почти соответствуют моим ожиданиям, но есть много нулевых значений
relid A B C
1 willyrobertus@gmail.com (null) (null)
1 (null) willy robertus (null)
1 (null) (null) Santo Paulus
2 antoni@gmail.com (null) (null)
2 (null) Antoni robertus (null)
2 (null) (null) Sasa Paulus
Попробуйте сгруппировать их поRelid я получил несовпадающую строку SQLFiddle
Большое спасибо
Вилли