Edwin,
No sé si te servirá.
Busca al menos 2 ocurrencias en 3 campos "n1, n2, n3" de valores dados en una lista, de
uno o n valores "(m1,m2,m3,...,mn)"
aplicando una
interpretación binaria con los campos para hallar la combinación deseada.-
n1 n2 n3 d
0 0 0 0
0 0 1 1
0 1 0 2
0 1 1 3
1 0 0 4
1 0 1 5
1 1 0 6
1 1 1 7
(Dos unos, dos ocurrencias) resulta.-
SELECT * FROM tabla
WHERE /* n1 n2 n3 d */
n2 IN (m1,m2,m3) AND n3 IN (m1,m2,m3) /* 0 1 1 3 */
OR
n1 IN (m1,m2,m3) AND n3 IN (m1,m2,m3) /* 1 0 1 5 */
OR
n1 IN (m1,m2,m3) AND n2 IN (m1,m2,m3) /* 1 1 0 6 */
;
--
Xavi
Edwin Quijada escribió:
Esto no es un problema que tiene nada que ver con Postgres pero si de
SQL y selecciones y queria compartirlo a ver si alguien tiene una mejor idea
Tengo una tabla con la siguiente estructura
id
n1
n2
n3
fecha
El objetivo es seleccionar con 3 valores dados tambien los records que
cumplan con al menos dos. Hice el ejercicio y lo que me salio fue una
cantiadad de combinaciones para averiguar los que tienen al menos dos.
Ejemplo:
Digamos que n1,n2, n3 son los valores en mi tabla m1,m2,m3 son los
valores dados para la seleccion. Lo que consegui fue lo siguiente para
seleccioonar los que cumplan con dos numeros iguales sin importar el orden
n1 = m1 n1 = m1 n1 = m1 n1 = m1
n2 = m2 n2 = m3 n3 = m2 n3 = m3
n1 = m2 n1 = m2 n1 = m3 n1 = m3
n2 = m1 n2 = m3 n2 = m1 n2 = m2
Es decir , mi select lo construi con 16 comparaciones para encontrar los
posibles pares con estos 3 valores.
Alguien ha hecho algo diferente a esto para encontrar estos resultados ?
Solo lo pongo por si acaso alguien ha hecho algo diferente para que lo
comparta.
Gracias
*-------------------------------------------------------*
*-Edwin Quijada
*-Developer DataBase
*-JQ Microsistemas
*-Soporte PostgreSQL
*-www.jqmicrosistemas.com
*-809-849-8087
*-------------------------------------------------------*
--
TIP 6: ¿Has buscado en los archivos de nuestra lista de correo?
http://archives.postgresql.org/pgsql-es-ayuda