Consulta condicional

10/01/2005 - 19:02 por Carla | Informe spam
Hola a todos
Tengo una tabla con dos campos.Estos dos campos son id,s
de tablas distintas y solo debe de haber uno.Si el campo
1 es distinto de 0 debo hacer join con una tabla, pero si
es el dos con otra (nunca pueden ser distintos de 0 los
dos a la vez).
Lo malo es que esto debo hacerlo con una unica consulta
sql directa que ira embebida, no puedo usar
procedimientos ni varias consultas.

Como podria hacerlo?

Es decir, si tengo una tabla "vehiculo" con los
campos "id_coche" e "id_moto", si "id_moto" es distinto
de 0 debo hacer join con la tabla "motos", pero si el que
es distinto de 0 es "id_coche" debo hacer join con la
tabla "coches".

Gracias y un saludo

Preguntas similare

Leer las respuestas

#1 ulises
10/01/2005 - 19:34 | Informe spam
Haz dos JOIN y juntalas con UNION o UNION ALL según
necesites o no los duplicados.

Saludos,
Ulises

Hola a todos
Tengo una tabla con dos campos.Estos dos campos son id,s
de tablas distintas y solo debe de haber uno.Si el campo
1 es distinto de 0 debo hacer join con una tabla, pero si
es el dos con otra (nunca pueden ser distintos de 0 los
dos a la vez).
Lo malo es que esto debo hacerlo con una unica consulta
sql directa que ira embebida, no puedo usar
procedimientos ni varias consultas.

Como podria hacerlo?

Es decir, si tengo una tabla "vehiculo" con los
campos "id_coche" e "id_moto", si "id_moto" es distinto
de 0 debo hacer join con la tabla "motos", pero si el que
es distinto de 0 es "id_coche" debo hacer join con la
tabla "coches".

Gracias y un saludo
.

Respuesta Responder a este mensaje
#2 Carla
11/01/2005 - 00:10 | Informe spam
Perdona ulises, no entiendo bien lo que dices.Podrias
ponerme un minimo ejemplo?

Gracias, con un ejemplito pequeño me sobra

Haz dos JOIN y juntalas con UNION o UNION ALL según
necesites o no los duplicados.

Saludos,
Ulises

Hola a todos
Tengo una tabla con dos campos.Estos dos campos son id,s
de tablas distintas y solo debe de haber uno.Si el campo
1 es distinto de 0 debo hacer join con una tabla, pero




si
es el dos con otra (nunca pueden ser distintos de 0 los
dos a la vez).
Lo malo es que esto debo hacerlo con una unica consulta
sql directa que ira embebida, no puedo usar
procedimientos ni varias consultas.

Como podria hacerlo?

Es decir, si tengo una tabla "vehiculo" con los
campos "id_coche" e "id_moto", si "id_moto" es distinto
de 0 debo hacer join con la tabla "motos", pero si el




que
es distinto de 0 es "id_coche" debo hacer join con la
tabla "coches".

Gracias y un saludo
.



.

Respuesta Responder a este mensaje
#3 Javier Loria
11/01/2005 - 02:43 | Informe spam
Hola:
Dos posibilidades:
a) Sugerencia de Ulises:
SELECT ...
FROM TablaBase
JOIN Tabla1
ON TablaBase.Tipo<>0
AND TablaBase.Columna1=Tabla1.Columna1
UNION ALL
SELECT ...
FROM TablaBase
JOIN Tabla2
ON TablaBase.Tipo=1
AND TablaBase.Columna2=Tabla2.Columna2
=b) Alternativa
=SELECT ...
FROM TablaBase
LEFT JOIN Tabla1
ON TablaBase.Tipo<>0
AND TablaBase.Columna1=Tabla1.Columna1
LEFT JOIN Tabla2
ON TablaBase.Tipo=1
AND TablaBase.Columna2=Tabla2.Columna2
= Si los datos son muchos probablemente es mejor la opcion b, si son pocos
la a es mas clara.
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"Carla" wrote in message
news:1da001c4f769$99086ef0$
Perdona ulises, no entiendo bien lo que dices.Podrias
ponerme un minimo ejemplo?

Gracias, con un ejemplito pequeño me sobra

Haz dos JOIN y juntalas con UNION o UNION ALL según
necesites o no los duplicados.

Saludos,
Ulises

Hola a todos
Tengo una tabla con dos campos.Estos dos campos son id,s
de tablas distintas y solo debe de haber uno.Si el campo
1 es distinto de 0 debo hacer join con una tabla, pero




si
es el dos con otra (nunca pueden ser distintos de 0 los
dos a la vez).
Lo malo es que esto debo hacerlo con una unica consulta
sql directa que ira embebida, no puedo usar
procedimientos ni varias consultas.

Como podria hacerlo?

Es decir, si tengo una tabla "vehiculo" con los
campos "id_coche" e "id_moto", si "id_moto" es distinto
de 0 debo hacer join con la tabla "motos", pero si el




que
es distinto de 0 es "id_coche" debo hacer join con la
tabla "coches".

Gracias y un saludo
.



.

Respuesta Responder a este mensaje
#4 ulises
11/01/2005 - 13:16 | Informe spam
Ops, gracias Javier ... había olvidado mencionar la opción
más elemental :(

Saludos,
Ulises

Hola:
Dos posibilidades:
a) Sugerencia de Ulises:
SELECT ...


FROM TablaBase
JOIN Tabla1
ON TablaBase.Tipo<>0
AND TablaBase.Columna1=Tabla1.Columna1
UNION ALL
SELECT ...
FROM TablaBase
JOIN Tabla2
ON TablaBase.Tipo=1
AND TablaBase.Columna2=Tabla2.Columna2
=>b) Alternativa
=>SELECT ...
FROM TablaBase
LEFT JOIN Tabla1
ON TablaBase.Tipo<>0
AND TablaBase.Columna1=Tabla1.Columna1
LEFT JOIN Tabla2
ON TablaBase.Tipo=1
AND TablaBase.Columna2=Tabla2.Columna2
=> Si los datos son muchos probablemente es mejor la


opcion b, si son pocos
la a es mas clara.
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"Carla" wrote in message
news:1da001c4f769$99086ef0$
Perdona ulises, no entiendo bien lo que dices.Podrias
ponerme un minimo ejemplo?

Gracias, con un ejemplito pequeño me sobra

Haz dos JOIN y juntalas con UNION o UNION ALL según
necesites o no los duplicados.

Saludos,
Ulises

Hola a todos
Tengo una tabla con dos campos.Estos dos campos son id,s
de tablas distintas y solo debe de haber uno.Si el campo
1 es distinto de 0 debo hacer join con una tabla, pero




si
es el dos con otra (nunca pueden ser distintos de 0 los
dos a la vez).
Lo malo es que esto debo hacerlo con una unica consulta
sql directa que ira embebida, no puedo usar
procedimientos ni varias consultas.

Como podria hacerlo?

Es decir, si tengo una tabla "vehiculo" con los
campos "id_coche" e "id_moto", si "id_moto" es distinto
de 0 debo hacer join con la tabla "motos", pero si el




que
es distinto de 0 es "id_coche" debo hacer join con la
tabla "coches".

Gracias y un saludo
.



.





.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida