SQL - Ayuda consulta sql

 
Vista:

Ayuda consulta sql

Publicado por juan (3 intervenciones) el 25/09/2012 10:09:09
hola!! espero que me podais ayudar,tengo 3 tablas

tabla1 tabla2 tabla3
id1(pk) id2(pk) id3(pk)
campo1 campo1 campo8
campo2 campo4 campo9
campo3 campo5 campo10
id2 (fk)

tengo un metodo en Pascal que simplemente se le pasa el id1

entonces me gustaria sacar los datos de la tabla 2 junto con el id3 (tabla3) con un inner join
yo hice esta consulta

SELECT t2.id2, t2.campo1, t2.campo4, t2.campo5 FROM tabla1 t1 INNER JOIN tabla2 t2 ON (t1.campo1 = t2.campo2) WHERE (t1.id1 = :variable_id1) ORDER BY id3;

se que esta mal obiamente,porque quiero coger tambien de la tercera tabla el ID3 pero no se como realcionar las tablas

en definitiva jejeje necesito una consulta que coja todos los datos de la tabla 2 y la clave principal de la tabla 3 con la condicion de que coja los datos correspondientes al ID1 (que el ID1 sea igual a la variable que se le pasa (eso con que me indiqueis que es la variable me vale) )

espero que me podais ayudar xq me estoy haciendo un lio muy grande

:(

gracias a todos
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Ayuda consulta sql

Publicado por leonardo_josue (1173 intervenciones) el 25/09/2012 17:29:15
Hola Juan:

En primer lugar, no nos dices que BD estás utilizando... es decir, mencionas que estás trabajando con Pascal, pero este es un lenguaje de programación, no un DBMS... la sintaxis para cada BD es semejante, pero también tiene diferencias importantes.

En segundo lugar, no me queda claro cómo están relacionadas tus tablas... por ejemplo, en tu descripción de estructuras expresas que la tabla1 tiene una FK (id2) que supongo hace referencia a la tabla2, y pones el campo1 como resaltado, sin embargo en la cláusula ON NO LOS ESTÁS TOMANDO EN CUENTA... si estos campos son comunes entonces la condición de unión entre tus tablas 1 y 2 debería ser más o menos así:

1
2
3
4
5
......
FROM tabla1 t1
INNER JOIN tabla2 t2
    ON t1.id2 = t2.id2 AND  t1.campo1 = t2.campo1
......


Ahora bien, con respecto a la Tabla3, debrías hacer también un INNER JOIN con alguna de las otras tablas, sin embargo NO EXPRESAS NINGUNA RELACIÓN CON LA TABLA3... o una de dos, o te faltó expresar esta relación o es ahí donde tienes el problema...

en realidad deberías hacer algo como esto:

1
2
3
4
5
6
7
......
FROM tabla1 t1
INNER JOIN tabla2 t2
    ON t1.id2 = t2.id2 AND  t1.campo1 = t2.campo1
INNER JOIN tabla3 t3
    ON t3.algo = t1.algo  <-- aquí debes poner la relación entre tus tablas
......


Te repito que la sintaxis entre los distintos DBMS puede variar para hacer los JOIN's múltiples, pero como no nos mencionaste cuál estás utilizando, tenemos un problema.

Sería conveniente que nos pusieras algunos datos de ejemplo de cada una de tus tablas, y que a partir de estos datos nos dijeras qué es exactamente lo que quieres obtener como resultado, de esta manera podemos indicarte alguna alternativa que te pueda servir.

Saludos
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