Select correcto?

12/12/2005 - 08:49 por José Antonio | Informe spam
Es correcto este select?

SELECT CODIGO,CASE TIPO WHEN 'A' THEN A.NOMBRE WHEN 'B' THEN B.NOMBRE WHEN
'C' THEN C.NOMBRE ELSE 'SIN NOMBRE' END AS NOMBRE FROM TABLA T LEFT JOIN A
ON A.CODIGO=T.CODIGO LEFT JOIN B ON B.CODIGO=T.CODIGO LEFT JOIN C ON
C.CODIGO=T.CODIGO

Funciona, pero no se si es la mejor manera de hacerlo.
Hay alguna recomendacion al respecto?


Saludos.
 

Leer las respuestas

#1 Eladio Rincón
12/12/2005 - 09:42 | Informe spam
yo lo cambiaría por:


create proc tu_proc @tipo char(1)
as

if @tipo = 'A'
SELECT CODIGO, A.NOMBRE NOMBRE FROM
TABLA T LEFT JOIN A
ON A.CODIGO=T.CODIGO

if @tipo = 'B'
SELECT CODIGO, B.NOMBRE NOMBRE FROM
TABLA T LEFT JOIN B
ON B.CODIGO=T.CODIGO

if @tipo = 'C'
SELECT CODIGO, C.NOMBRE NOMBRE FROM
TABLA T LEFT JOIN C
ON C.CODIGO=T.CODIGO

if @tipo = 'D'
SELECT CODIGO, D.NOMBRE NOMBRE FROM
TABLA T LEFT JOIN D
ON D.CODIGO=T.CODIGO

GO

piensa que en tu ejemplo estás cruzando siempre las cuatro tablas, mientras
que en el proc de ejemplo sólo cruzarías la tabla necesaria

Eladio Rincón

SQL Server MVP, Mentor
Solid Quality Learning
http://www.SolidQualityLearning.com

"Solid Quality Learning is the trusted global provider of advanced education
and solutions for the entire Microsoft database platform"


"José Antonio" wrote in message
news:ONeqeCv$
Es correcto este select?

SELECT CODIGO,CASE TIPO WHEN 'A' THEN A.NOMBRE WHEN 'B' THEN B.NOMBRE WHEN
'C' THEN C.NOMBRE ELSE 'SIN NOMBRE' END AS NOMBRE FROM TABLA T LEFT JOIN A
ON A.CODIGO=T.CODIGO LEFT JOIN B ON B.CODIGO=T.CODIGO LEFT JOIN C ON
C.CODIGO=T.CODIGO

Funciona, pero no se si es la mejor manera de hacerlo.
Hay alguna recomendacion al respecto?


Saludos.

Preguntas similares