PostgreSQL - Conbinacion de dos columnas

 
Vista:
sin imagen de perfil
Val: 1
Ha disminuido su posición en 10 puestos en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

Conbinacion de dos columnas

Publicado por ivan (1 intervención) el 17/06/2020 11:03:26
Buenos dias,

Me han pedido que sobre una tabla que tiene tres campos(Fabricante, color1, color2) saque las combinaciones que todavía no se han dado de los campos color sin repetir combinacion de color y no sabemos el número de colores que va haber en la tabla ni los fabricantes, en ejemplo seria la siguiente tabla:


Fabricante| COLOR1| COLOR2
Peugeot | Blanco | azul
Audi | Blanco | Negro
Citroen | verde | Rosa

Pues para el Peugeot tengo que ver todas las combinaciones posibles de color sin repetir colores y descartando el ya dado, tambien para el Audi y Citroen pero para no ser muy extenso muestro el de Peugeot :

Peugeot | Blanco | Blanco
Peugeot | Blanco | Rosa
Peugeot | Blanco | Negro
Peugeot | Blanco | Verde
Peugeot | azul |azul
Peugeot | azul |Negro
Peugeot | azul |verde
Peugeot | azul |Rosa
Peugeot | Negro | Negro
Peugeot | Negro | verde
Peugeot | Negro | Rosa
Peugeot | verde | verde
Peugeot | verde | Rosa
Peugeot | Rosa | Rosa

De momento lo que he hecho es sacar todas las combinaciones posibles de la siguiente forma para que se combine entre ellos y asignarlo a una tabla temporal para después seleccionar las combinaciones que interesa.

1
2
3
4
5
6
7
8
9
10
11
with todas_las_combinaciones (
 
select distinct t1.fabricante, t2.color1, t2.color2 from tabla as t1, tabla as t2,tabla as t3
union
select distinct t1.fabricante, t2.color2, t2.color1 from tabla as t1, tabla as t2,tabla as t3
union
select distinct t1.fabricante, t2.color1, t2.color1 from tabla as t1, tabla as t2,tabla as t3
union
select distinct t1.fabricante, t2.color2, t2.color2 from tabla as t1, tabla as t2,tabla as t3
 
)


el problema es que no sé descartar las combinaciones que se repiten como puede ser Blanco-Rosa Rosa-Blanco, se me ocurre hacerlo con un bucle pero no tengo claro como.

por supuesto muchas gracias a los que me ayuden
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder