MySQL Forums
Forum List  »  Spanish

Re: Union de consultas
Posted by: Hugo Gsell
Date: April 26, 2020 06:45AM

Gracias por la respuesta. Por lo que pude tranponer de lo que pones a mi problema, me resulta mas de un registro del mismo artículo.
Voy a transcribir un ejemplo completo y al final lo que deseo obtener.
Por lo que segui investigando mas que pivote son tipo referencias cruzadas...
ahi va...:

25.04.2020

CREATE TABLE producto
(
prod_id integer, prod_nombre nvarchar(50),
PRIMARY KEY (prod_id)
);

INSERT INTO PRODUCTO (prod_id,prod_nombre)
VALUES (1,'Aceite'), (2,'Arroz'), (3,'Harina')


CREATE TABLE codigo
(
cod_id integer, cod_nombre nvarchar(50),
PRIMARY KEY (cod_id)
);

INSERT INTO CODIGO (cod_id,cod_nombre)
VALUES (1,'CodBarra'), (2,'CodFabrica'), (3,'CodInterno')



CREATE TABLE CODPROD
(
prod_id integer, cod_id integer, codprod_Valor nvarchar(50),
PRIMARY KEY (prod_id,cod_id),
FOREIGN KEY (prod_id) REFERENCES producto(prod_id),
FOREIGN KEY (cod_id) REFERENCES codigo(cod_id)
);


INSERT INTO CODPROD (prod_id,cod_id,codprod_valor)
VALUES (1,1,'AAAA'), (1,2,'0000'), (1,3,'CINT01'),
(2,1,'BBBB'),
(2,3,'3333')



SELECT p.prod_id, p.prod_nombre,
if(c.cod_id = 1, codprod_valor, '') AS Codigo1,
if(c.cod_id = 2, codprod_valor, '') AS Codigo2,
if(c.cod_id = 3, codprod_valor, '') AS Codigo3
FROM producto p
LEFT JOIN codprod cp
ON p.prod_id=cp.prod_id
INNER JOIN codigo c
ON cp.cod_id=c.cod_id






CONSULTA ENVIADA AFOROS 25.04.2020
https://es.stackoverflow.com/questions/ask
https://forums.mysql.com/posting.php?71
http://foros.cristalab.com/posting.php?mode=newtopic&f=18



Tengo tres tablas
producto: productos
Codigo: cada producto puede tener distintos tipos de codigo: barra, fabrica, interno
ProductoCodigo es la que relaciona un producto con su codigo. Un producto puede tener 0, 1.. n codigos (como máximo uno solo por tipo (tabla codigo))

CREATE TABLE producto
(
prod_id integer, prod_nombre nvarchar(50),
PRIMARY KEY (prod_id)
);

INSERT INTO PRODUCTO (prod_id,prod_nombre)
VALUES (1,'Aceite'), (2,'Arroz'), (3,'Harina')


CREATE TABLE codigo
(
cod_id integer, cod_nombre nvarchar(50),
PRIMARY KEY (cod_id)
);

INSERT INTO CODIGO (cod_id,cod_nombre)
VALUES (1,'CodBarra'), (2,'CodFabrica'), (3,'CodInterno')



CREATE TABLE CODPROD
(
prod_id integer, cod_id integer, codprod_Valor nvarchar(50),
PRIMARY KEY (prod_id,cod_id),
FOREIGN KEY (prod_id) REFERENCES producto(prod_id),
FOREIGN KEY (cod_id) REFERENCES codigo(cod_id)
);


INSERT INTO CODPROD (prod_id,cod_id,codprod_valor)
VALUES (1,1,'AAAA'), (1,2,'0000'), (1,3,'CINT01'),
(2,1,'BBBB'),
(2,3,'3333')



SELECT p.prod_id, p.prod_nombre,
if(c.cod_id = 1, codprod_valor, '') AS Codigo1,
if(c.cod_id = 2, codprod_valor, '') AS Codigo2,
if(c.cod_id = 3, codprod_valor, '') AS Codigo3
FROM producto p
LEFT JOIN codprod cp
ON p.prod_id=cp.prod_id
INNER JOIN codigo c
ON cp.cod_id=c.cod_id

Con estos datos y mi consulta obtengo:
prod_id prod_nombre Codigo1 Codigo2 Codigo3
1 Aceite AAAA "" ""
1 Aceite "" 0000 ""
1 Aceite "" "" CINT01
2 Arroz BBBB "" ""
2 Arroz "" "" 3333

y me interesa obtener
prod_id prod_nombre Codigo1 Codigo2 Codigo3
1 Aceite AAAA 0000 CINT01
2 Arroz BBBB 3333 ""
2 Harina "" "" ""

Desde ya muchas gracias a cualquier ayuda o punta que me tiren para resolver mi problema

Options: ReplyQuote


Subject
Views
Written By
Posted
263
April 20, 2020 11:45AM
105
April 20, 2020 01:35PM
Re: Union de consultas
93
April 26, 2020 06:45AM
105
April 27, 2020 01:26PM
95
April 27, 2020 02:05PM


Sorry, only registered users may post in this forum.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.