3
I have the following database:
CREATE DATABASE IF NOT EXISTS `materiais`;
USE `materiais`;
--
-- Table structure for table `categoria`
--
CREATE TABLE `categoria` (
`id_categoria` int(11) NOT NULL,
`descricao_categoria` varchar(100) NOT NULL,
`sin_ativo` char(1) NOT NULL DEFAULT 'S',
PRIMARY KEY (`id_categoria`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `categoria`
--
INSERT INTO `categoria` VALUES (1,'travessas','S'),(2,'Capa Cromada','S'),(3,'Coifas Vedante','S'),(4,'Chassis Metálicos','S'),(5,'Quadros Hidráulicos','S'),(6,'Tampa de Inspeção','S'),(7,'Abraçadeira Sextavada Tipo M','S'),(8,'Ponto de Filtro','S'),(9,'TE Ducha higiênica','S'),(10,'Carenagens Plásticas','S');
--
-- Table structure for table `metricas`
--
CREATE TABLE `metricas` (
`id_metricas` int(11) NOT NULL,
`descricao` varchar(45) NOT NULL,
PRIMARY KEY (`id_metricas`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `metricas`
--
INSERT INTO `metricas` VALUES (1,'A Máx (mm)'),(2,'A Min (mm)'),(3,'B'),(4,'C'),(5,'B (mm)');
--
-- Table structure for table `imagem`
--
CREATE TABLE `imagem` (
`id_imagem` int(11) NOT NULL,
`caminho` varchar(100) NOT NULL,
`sin_ativo` varchar(45) DEFAULT 'S',
`produto_id_produto` int(11) NOT NULL,
PRIMARY KEY (`id_imagem`),
KEY `fk_imagem_produto1` (`produto_id_produto`),
CONSTRAINT `fk_imagem_produto1` FOREIGN KEY (`produto_id_produto`) REFERENCES `produto` (`id_produto`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `imagem`
--
--
-- Table structure for table `especificacao`
--
DROP TABLE IF EXISTS `especificacao`;
CREATE TABLE `especificacao` (
`id_codigo` varchar(15) NOT NULL,
`id_metricas` int(11) NOT NULL,
`valor` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id_codigo`,`id_metricas`),
KEY `fk_codigo_has_metricas_metricas1` (`id_metricas`),
KEY `fk_codigo_has_metricas_codigo1` (`id_codigo`),
CONSTRAINT `fk_codigo_has_metricas_codigo1` FOREIGN KEY (`id_codigo`) REFERENCES `codigo` (`id_codigo`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `fk_codigo_has_metricas_metricas1` FOREIGN KEY (`id_metricas`) REFERENCES `metricas` (`id_metricas`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `especificacao`
--
INSERT INTO `especificacao` VALUES ('CAN16',3,'57'),('CAN16',4,'63'),('CC00000016',1,'457'),('CC00000016',2,'317'),('CC00000016',5,'53'),('ESP400',1,'394'),('ESP400',2,'254');
--
-- Table structure for table `codigo`
--
CREATE TABLE `codigo` (
`id_codigo` varchar(15) NOT NULL,
`id_produto` int(11) NOT NULL,
`sin_ativo` char(1) NOT NULL DEFAULT 'S',
`descricao` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id_codigo`),
KEY `fk_codigo_produto1` (`id_produto`),
CONSTRAINT `fk_codigo_produto1` FOREIGN KEY (`id_produto`) REFERENCES `produto` (`id_produto`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `codigo`
--
INSERT INTO `codigo` VALUES ('CAN16',7,'S',NULL),('CC00000016',8,'S',NULL),('ESP400',7,'S',NULL),('TMMC390100',2,'S',NULL),('TMRP1239070',1,'S',NULL),('TMRP3439070',1,'S',NULL);
--
-- Table structure for table `produto`
--
CREATE TABLE `produto` (
`id_produto` int(11) NOT NULL,
`descricao` varchar(75) NOT NULL,
`sin_ativo` char(1) NOT NULL DEFAULT 'S',
`id_categoria` int(11) NOT NULL,
PRIMARY KEY (`id_produto`),
KEY `fk_produtos_categoria` (`id_categoria`),
CONSTRAINT `fk_produtos_categoria` FOREIGN KEY (`id_categoria`) REFERENCES `categoria` (`id_categoria`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `produto`
--
INSERT INTO `produto` VALUES (1,'Travessa para Registro de Pressão','S',1),(2,'Travessa para Monocomando','S',1),(3,'Travessa Tubular Para Cotovelo','S',1),(4,'Travessa para Distribuidor','S',1),(5,'Travessa para Aquecedor e tanque','S',1),(6,'Travessa para registro de gaveta','S',1),(7,'Conjunto Capa Cromada','S',2),(8,'CONJUNTO CAPA CROMADA CANOPLA EM LATÃO CROMADO','S',2),(9,'CONJUNTO CAPA CROMADA CANOPLA EM ABS','S',2),(10,'COIFA SIMPLES','S',3),(11,'COIFA SILICONE','S',3),(12,'COIFA TRIPLA','S',3),(13,'COIFA DUPLA','S',3),(14,'COIFA QUADRUPLA','S',3),(15,'CARENAGEM TANQUE','S',10),(16,'CHASSI TANQUE','S',4),(17,'QUADRO CHUVEIRO DE SOBREPOR - 2 TRAVESSAS','S',5),(18,'TAMPA DE INSPEÇÃO VENTILADA','S',6),(19,'ABRAÇADEIRA SEXTAVADA TIPO M','S',7),(20,'PONTO DE FILTRO','S',8),(21,'TE DUCHA HIGIÊNICA','S',9);
When performing the sql:
select p.id_produto, p.descricao, c.id_codigo, m.descricao,e.valor
from produto as p inner join codigo as c ON p.id_produto =
c.id_produto inner join especificacao as e ON e.id_codigo =
c.id_codigo inner join metricas as m ON e.id_metricas = m.id_metricas
where c.id_produto = 7
The result for each product is given in two lines with in the example:
id_produto descricao id_codigo descricao valor
7 Conjunto Capa Cromada CAN16 B 57
7 Conjunto Capa Cromada CAN16 C 63
7 Conjunto Capa Cromada ESP400 A Máx (mm) 394
7 Conjunto Capa Cromada ESP400 A Min (mm) 254
I need the returned value to appear separated by product in just one line, for example:
id_produto descricao id_codigo descricao valor descricao valor
7 Conjunto Capa Cromada CAN16 B 57 C 63
How to solve?
What are the criteria for passing the result with 4 lines to 1 line only? You can group the results with
GROUP BY
for example or better specify yourWHERE
. Clarify what you want to see at the end as a result. (Your code in Sqlfiddle)– Omni
I would like the result of id_code to be in only one line. Something like 7 Set Cover Chrome CAN16 B 57 C 63
– Israel Zebulon
I looked but note that the bottom line value the C 63 did not appear.
– Israel Zebulon
I suggest you find another solution to the problem, because for every possible option of 'Description' you would have 2 more columns in your query. It doesn’t work like that. Suddenly, you ask another question by reporting the problem you want to solve and someone answers the best way.
– DiogoSantana
One problem is that the number of columns may vary, maybe the use of a CASE with MAX solves but I don’t believe in solution via sql , maybe the use of a report generator that cross-references (Crystal Reports for example) is the best.
– Motta