Montar query

13/12/2004 - 13:42 por Joan Ibáñez | Informe spam
Buenos dias! Estoy intentando montar un query, y no encuentro la solución:

Select T1.Campo1, T2.Campo3, T3.Campo5

From Tabla1 T1 Inner Join Tabla2 T2
On T1.CampoX = T2.CampoX

Inner Join T2.Campo8 T3
On T1.CampoY = T3.CampoY

Where ...

El problema es que en el segundo 'Inner Join' la tabla la quiero obtener de
uno de los campos de la Tabla2.
Tal como esta no funciona ¿Como puedo hacerlo?¿Se puede?

El query lo almaceno en una variable 'varchar' para luego lanzarlo con exec:

exec(@query)

Un saludo.

Preguntas similare

Leer las respuestas

#1 Maxi
13/12/2004 - 14:07 | Informe spam
Hola, para hacer eso tenes que usar Tablas derivadas


Select T1.Campo1, T2.Campo3, T3.Campo5

From Tabla1 T1 Inner Join Tabla2 T2
On T1.CampoX = T2.CampoX

Inner Join (select Campo8,campoy from tabla2) T3
On T1.CampoY = T3.CampoY

Where ...


pd: no uses SQL-dinamico ya que es una tecnica muy insegura y de bajo
rendimiento


Salu2
Maxi


"Joan Ibáñez" escribió en el mensaje
news:
Mostrar la cita
#2 Joan Ibáñez
13/12/2004 - 15:49 | Informe spam
Lo que quiero hacer, es que el segundo inner join sea con la tabla cuyo
nombre esta en el campo 'campo8' de la tabla 'tabla2', ¿me explico? porque
en funcion del registro que se este tratando, he de hacer el 'inner join'
con diferentes tablas.

Un saludo.


"Maxi" escribió en el mensaje
news:%
Mostrar la cita
solución:
Mostrar la cita
#3 Maxi
13/12/2004 - 15:51 | Informe spam
Ahh, entiendo!! mmm, es una extructura bien extraña la tuya :( vos decis que
en un campo esta el nombre de la tabla a vincular? Francamente si es asi no
se me ocurre como podes hacerlo :(


Salu2
Maxi


"Joan Ibáñez" escribió en el mensaje
news:%
Mostrar la cita
#4 Joan Ibáñez
13/12/2004 - 16:17 | Informe spam
Ok! Gracias de todos modos! ;-).

En una tabla de configuracion tengo un listado de productos, cada uno de
ellos contiene informacion muy diferente a los demas productos. Cada
producto es almacenado en diferentes tablas, y lo que quiero es que al
realizar una consulta lo haga uniendo una tabla principal con la tabla del
producto que se este tratando.

Esto lo hago, para evitar lanzar diferentes querys desde vb.

Un saludo.


"Maxi" escribió en el mensaje
news:
Mostrar la cita
que
Mostrar la cita
no
Mostrar la cita
porque
Mostrar la cita
join'
Mostrar la cita
con
Mostrar la cita
#5 ulises
13/12/2004 - 16:17 | Informe spam
¿Los valores que puedes incluir en el campo8 de la tabla T2
son pocos?, si es así puedes usar varias sentencias SELECT
y juntarlas con UNION ALL, por ejemplo si los valores que
toma ese campo son TABLATX1, TABLATX2 y TABLATX3 puedes
hacer algo como (sin probar):

SELECT T1.Campo1, T2.Campo3, T3.Campo5
FROM Tabla1 T1
INNER JOIN Tabla2 T2 ON T1.CampoX = T2.CampoX
INNER JOIN TABLATXT1 T3 ON T1.CampoY = T3.CampoY
WHERE T2.Campo8 = 'TABLATXT1'
UNION ALL
SELECT T1.Campo1, T2.Campo3, T3.Campo5
FROM Tabla1 T1
INNER JOIN Tabla2 T2 ON T1.CampoX = T2.CampoX
INNER JOIN TABLATXT2 T3 ON T1.CampoY = T3.CampoY
WHERE T2.Campo8 = 'TABLATXT2'
UNION ALL
SELECT T1.Campo1, T2.Campo3, T3.Campo5
FROM Tabla1 T1
INNER JOIN Tabla2 T2 ON T1.CampoX = T2.CampoX
INNER JOIN TABLATXT3 T3 ON T1.CampoY = T3.CampoY
WHERE T2.Campo8 = 'TABLATXT3'

Saludos,
Ulises

Mostrar la cita
encuentro la solución:
Mostrar la cita
quiero obtener de
Mostrar la cita
lanzarlo con exec:
Mostrar la cita
Ads by Google
Search Busqueda sugerida