Hola Herman


El filtro no debería aplicarse sobre la llave foranea ID_TIP_REG, la
consulta hipotética seria algo así:

SELECT campos
FROM tabla1 AS a
JOIN PRD_REG AS b ON a.ID_TIP_REG=b.ID_TIP_REG
WHERE b.*NOM_TIP_REG like param*:

donde *param* puede ser cualquier de los valores del dominio
(DETALLADO,MARCADO...) o % para el caso de todos. Por lo tanto
la función que implemento no debe recibir el ID_TIP_REG sino el valor
de NOM_TIP_REG ya que, según menciono, igual hace el JOIN con la otra
tabla, la recomendación es que la llave foranea ID_TIP_REG en tabla1
debería estar indexada







El 21 de junio de 2016, 19:47, Herman Estaban<hermanesta...@gmail.com>
escribió:

> Gracias por las respuestas.
>
> Voy a explicar mejor lo que requiero.
>
> Tengo una tabla PRD_REG con 02 campos:
>
> ID_TIP_REG INTEGER
> NOM_TIP_REG VARCHAR(25)
>
> Esta tabla tiene 14 registros y esta registrado asi:
>
> ID_TIP_REG  |  NOM_TIP_REG
> 1                   | DETALLADO
> 2                   | MARCADO
> 3                   | PROGRAMADO
> 4                   | CON DISEÑO
> 5                   | SIN DISEÑO
> .
> .
> .
> 99                 | SIN REGISTRAR
>
> He creado un funcion, que tiene un parametro (param) de tipo INTEGER, en
> esta funcion la que esta tabla PRD_REG se cruza con JOIN con otra tabla y
> en el WHERE quiero usar un LIKE ya que el usuario puede elegir cualquiera
> de los codigos de la tabla PRD_REG, como tambien todos por eso necesito el
> LIKE.
>
> Por eso utilizo esto:
> WHERE CAST(ID_TIP_REG AS CHAR) LIKE param;
>
> Pero que tan eficiente es usar LIKE con campos INTEGER, es una practica
> recomendable?
>
> Debo trabajar con campos CHAR para usar el LIKE quizas por rapides?
>
> Saludos.
>
>
>
>
>


-- 
Cordialmente,

Ing. Hellmuth I. Vargas S.
Esp. Telemática y Negocios por Internet
Oracle Database 10g Administrator Certified Associate
EnterpriseDB Certified PostgreSQL 9.3 Associate

Responder a