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

Preguntas similare

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



Respuesta Responder a este mensaje
#2 JLuis Estrada
24/05/2005 - 22:56 | Informe spam
fijate que ya lo encontre, yo utilizo JET SQL, y pues descubri (¿?) que
necesito usar parentesis en todos los join que uso

muchas gracias por tu tiempo
"Braulio Diez" escribió en el mensaje
news:
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



Respuesta Responder a este mensaje
#3 Braulio Diez
25/05/2005 - 09:53 | Informe spam
Vaya :-(, es lo malo de Access, que a veces te da unas sopresas más
desagradable ...

"JLuis Estrada" wrote:

fijate que ya lo encontre, yo utilizo JET SQL, y pues descubri (¿?) que
necesito usar parentesis en todos los join que uso

muchas gracias por tu tiempo
"Braulio Diez" escribió en el mensaje
news:
> 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
>>
>>
>>



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