SQL - consulta sql

   
Vista:

consulta sql

Publicado por dario (4 intervenciones) el 30/03/2010 17:21:59
Hola, tengo la sgte. consulta, tengo que relacionar una o mas tablas en access, como no puedo, estoy intentando en SQL.
tabla1 tabla2 tabla3
id nombre monto06 id nombre monto07 id nombre monto08
8 juan 10 7 jose 20 6 maria 100
9 pedro 20 9 pedro 30 9 pedro 200
10 dardo 30 12 hugo 10 10 dardo 300
11 daniel 40 14 quique 15 15 enrique 100
16 anibal 100

la idea es tener una sola tabla que me combine las tres (o más) donde aparezcan combinadas todas las tablas (o màs) con valores en 0 (cero).
Alguien me podría faciltar el query. Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:consulta sql

Publicado por Leonardo Josue (877 intervenciones) el 30/03/2010 17:55:00
Buenos días Dario:

El foro es sobre DUDAS, no puedes pedir que se te pase el query así nomás, sin siguiera demostrar que haz intentado hacer algo. Lo que necesitas hacer para combinar las tablas es FULL OUTER JOIN (te recomiendo que busques un poco de información si no sabes como funciona).

Si el manejador de BD que estás utilizando no soporta este tipo de unión entre tablas puedes simularlo haciendo uso de LEFT JOIN, RIGTH JOIN y UNION.

Cuestión de que leas un poco, en este mismo foro.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta sql

Publicado por dario (4 intervenciones) el 30/03/2010 18:11:32
Muchas Gracias Leo, si estoy con union, estoy y sigo investigando, hace bastante que estoy con esto, igualmente muchas gracias por tu atención.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

duda

Publicado por DARIO (4 intervenciones) el 30/03/2010 18:39:40
Estimado Leonardo Joseu:

Podés ayudarme con esto:
SELECT * FROM tabla1
LEFT JOIN tabla2 ON tabla1.id=tabla2.id
UNION SELECT * FROM tabla1
RIGHT JOIN tabla2 ON tabla1.id=tabla2.id
WHERE tabla1.id IS NULL;

hasta aca llegué pero no es lo que busco (son dos, necesito icnporar más, con respecto al FULL OUTER JOIN, MI ACCESS NO LO TOMA).
GRACIAS POR TU AYUDA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:duda

Publicado por Leonardo Josue (877 intervenciones) el 30/03/2010 21:22:48
Hola de nuevo Dario:

Mira, te voy a poner cómo sería el query para unir 3 tablas, pero como te podrás dar cuenta la complejidad aumenta bastante en comparación con 2 tablas. Tengo que reconocer que nunca he tenido necesidad de unir más de 3 tablas sin usar el FULL OUTER JOIN pero espero que te pueda servir de algo.

SELECT A.*, Tabla3.id as id3, Tabla3.Nombre as Nombre3, Tabla3.Monto08 FROM
(
SELECT
Tabla1.id as id1, Tabla1.Nombre as Nombre1, Tabla1.Monto06,
Tabla2.id as id2, Tabla2.Nombre as Nombre2, Tabla2.Monto07
FROM Tabla1 LEFT JOIN Tabla2 on Tabla2.id = Tabla1.id
UNION
SELECT
Tabla1.id as id1, Tabla1.Nombre as Nombre1, Tabla1.Monto06,
Tabla2.id as id2, Tabla2.Nombre as Nombre2, Tabla2.Monto07
FROM Tabla1 RIGHT JOIN Tabla2 on Tabla2.id = Tabla1.id
) A
LEFT JOIN Tabla3 On Tabla3.id = A.id1
UNION
SELECT A.*, Tabla3.id as id3, Tabla3.Nombre as Nombre3, Tabla3.Monto08 FROM
(
SELECT
Tabla1.id as id1, Tabla1.Nombre as Nombre1, Tabla1.Monto06,
Tabla2.id as id2, Tabla2.Nombre as Nombre2, Tabla2.Monto07
FROM Tabla1 LEFT JOIN Tabla2 on Tabla2.id = Tabla1.id
UNION
SELECT
Tabla1.id as id1, Tabla1.Nombre as Nombre1, Tabla1.Monto06,
Tabla2.id as id2, Tabla2.Nombre as Nombre2, Tabla2.Monto07
FROM Tabla1 RIGHT JOIN Tabla2 on Tabla2.id = Tabla1.id
) A
RIGHT JOIN Tabla3 On Tabla3.id = A.id1

Si checas un poco cómo está constitutido la consulta podrás darte cuenta que primero hago la unión de las tablas 1 y 2 de manera semejante a la que pusiste en tu post, y después, la tabla resultante la uno con la tabla 3 igual mediante un LEFT JOIN, RIGHT JOIN y finalmente una UNION. Observa también que no utilizo el operador * para listar todos los campos, esto es para evitar que en las consultas internas queden campos con el mismo nombre.

Saludos y espero que te sea de utilizad.
Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

gracias maestro

Publicado por dario (4 intervenciones) el 31/03/2010 00:13:32
Desde ya muchas gracias, la verdad me sirve, excelente tu apoyo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar