Hola como estan, como saben ya aun estoy implementando las operaciones conjuntistas difuzas, ya logre el intersect no importando si en el query haya select combinados difuzo y no difuzo ya esta listo, el except tambien estuviera listo pero solo por un inconveniente no he podido avanzar, la lógica del except difuzo es la siguiente
Tabla_1 Nombre Grado de membresía Rodolfo Jose Vegas || 0.5 Tabla_2 Nombre Grado de membresía Rodolfo Jose Vegas || 0.7 Aury Carolina Rodri || 0.2 select * from Tabla_1 except select * from Tabla_2; Tabla_Resultante Nombre Grado de membresía Rodolfo Jose Vegas || 0.3 Eso se calcula de la siguiente manera, el except difuzo es como la intersección, tomo las tuplas que son iguales y para calcular lo del grado de membresía es Grado de Membresía = *menor*(grado(Tabla_1),1-grado(Tabla_2)), el problema es que como yo se cuales son las tuplas de la Tabla_1 y cuales son las tuplas de la Tabla_2, porque los grados de membresía de la Tabla_1 los deja tal cual y los grados de membresía de la Tabla_2 tengo que aplicarle el completo que es 1-grado, se que esta el atributo scanrelid del Scan, pero cuando se ejecuta el except el Scan nunca llega a ese procedimiento, intente con: a = ObjectIdGetDatum(inputTupleSlot->tts_tuple->t_tableOid); b = ObjectIdGetDatum(inputTupleSlot->tts_minhdr.t_tableOid); elog(NOTICE,"%d %d", DatumGetUInt8(a), DatumGetUInt8(b)); pero no me sirve porque para cualquier tabla el oid es el mismo, sin eso no puedo avanzar, me estaba diciendo que colocara bandera pero imposible porque uno no sabe como viene la combinacion o la estructura del query, si saben algo al respecto no duden en decirme, Gracias!!!! -- Saludos, Atentamente, Lic. Rodolfo José Vegas Gómez. Valencia - Venezuela
