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.
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
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


0