Error de consulta con multiples INNER JOIN

23/05/2005 - 17:54 por JLuis Estrada | Informe spam
Alguien me puede decir porque no me funciona la siguiente consulta:

SELECT Pacientes.Clv_Pac, Pacientes.Nom, Pacientes.A_Pat, Pacientes.A_Mat,
Pacientes.Clv_Ocu, (Pacientes.Cal & ' ' & Pacientes.Col & '. ' &
Pacientes.Cd & ', ' & Pacientes.Est & '.CP ' & Pacientes.CP) AS Domicilio,
Pacientes.Ema, Pacientes.Refe, Pacientes.FecNac, Pacientes.Civ,
Pacientes.Sex, Pacientes.Pes, Pacientes.San, Pacientes.Eda, Pacientes.Esta,
Pacientes_Cat.Clave, Pacientes_Ocu.Des_Ocu, Pacientes_Tel.Num FROM
Pacientes INNER JOIN Pacientes_Cat, INNER JOIN Pacientes_Ocu, INNER JOIN
Pacientes_Tel ON (Pacientes.Clv_Pac = Pacientes_Cat.Clv_Pac), ON
(Pacientes.Clv_Ocu = Pacientes_Ocu.Clv_Ocu), ON (Pacientes.Clv_Pac =
Pacientes_Tel.Clv_Pac) WHERE Pacientes.Clv_Pac = '1' AND Pacientes_Tel.Pred
=True

espero que alguien pueda decirme, porque la verdad no le hayo
jluis
 

Leer las respuestas

#1 Braulio Diez
24/05/2005 - 00:10 | Informe spam
Hola,

Es complicado decir en que falla tu consulta, por ejemplo no sabemos si lo
que te da es un error de compilación o si es que la consulta no te da
resultados.

Un consejo para encontrar el error, parte de los más simple y mientras
vaya funcionado ves añadiendo JOIN's, esto te ayudará a delimitar el problema.

Para tener las sentencias SQL más claras yo suelo poner los inner JOIN de
la siguiente forma:

SELECT *
FROM T1
INNER JOIN T2
ON T1.id = T2.id
INNER JOIN T3
ON t2.id = T3.id

Esto al menos en SQL Server funciona.

Un problema que suele ocurrir con los inner join es que uno de los valores
que cruzamos con la tablas no se encuentra en una de las tablas que cruzamos
con esto el inner join nos arroja cero resultados (para evitar esto puedes
usar un LEFT Join).

Buena suerte
Braulio

"JLuis Estrada" escribió:

Alguien me puede decir porque no me funciona la siguiente consulta:

SELECT Pacientes.Clv_Pac, Pacientes.Nom, Pacientes.A_Pat, Pacientes.A_Mat,
Pacientes.Clv_Ocu, (Pacientes.Cal & ' ' & Pacientes.Col & '. ' &
Pacientes.Cd & ', ' & Pacientes.Est & '.CP ' & Pacientes.CP) AS Domicilio,
Pacientes.Ema, Pacientes.Refe, Pacientes.FecNac, Pacientes.Civ,
Pacientes.Sex, Pacientes.Pes, Pacientes.San, Pacientes.Eda, Pacientes.Esta,
Pacientes_Cat.Clave, Pacientes_Ocu.Des_Ocu, Pacientes_Tel.Num FROM
Pacientes INNER JOIN Pacientes_Cat, INNER JOIN Pacientes_Ocu, INNER JOIN
Pacientes_Tel ON (Pacientes.Clv_Pac = Pacientes_Cat.Clv_Pac), ON
(Pacientes.Clv_Ocu = Pacientes_Ocu.Clv_Ocu), ON (Pacientes.Clv_Pac =
Pacientes_Tel.Clv_Pac) WHERE Pacientes.Clv_Pac = '1' AND Pacientes_Tel.Pred
=True

espero que alguien pueda decirme, porque la verdad no le hayo
jluis



Preguntas similares