Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Error en consulta (https://www.clubdelphi.com/foros/showthread.php?t=72988)

elguille 24-03-2011 10:25:24

Error en consulta
 
Mysql 5.1.1
Código SQL [-]
SELECT articulo.codigo,lineas_traspaso.cantidad FROM articulo inner join lineas_traspaso on lineas_traspaso.ARTICULO=
ARTICULO.CODIGO inner join traspaso on lineas_traspaso.codigo=traspaso.codigo where  ARTICULO.temporada='B1V' AND 
DESTINO='05' AND traspaso.tipo='T' AND traspaso.FECHA>'2011-03-04' AND articulo.PROVEEDOR='DC'
retorna 0 registros la misma consulta pero solo pidiendo el primer campo

Código SQL [-]
SELECT articulo.codigo FROM articulo inner join lineas_traspaso on lineas_traspaso.ARTICULO=ARTICULO.CODIGO inner join
 traspaso on lineas_traspaso.codigo=traspaso.codigo where  ARTICULO.temporada='B1V' AND DESTINO='05' AND traspaso.tipo='T'
 AND traspaso.FECHA>'2011-03-04' AND articulo.PROVEEDOR='DC'
retorna 3 registros :confused:. Repasando los datos lo correcto serian 3 registros
He cambiado los inner join en el where y sigue dando lo mismo....
¿alguien encuentra explicación?

urixiv 24-03-2011 11:50:39

Hola,
no se si en MySQL pasa, pero con el SQL Server a veces sí.
En función de como se monta el servidor las consultas, si no le pones ningún campo ni en el select ni en el where de una tabla, aunque este en el join, no hace la join....
Prueba de cambiar las inner join por left join, así podrás ver si es eso.

Espero haberte sido de ayuda

oscarac 24-03-2011 18:25:04

se veria un poquito mas ordenado y se tendria un mejor vision del codigo si utilizaras alias.....
Código SQL [-]
Select ART.Codigo, LT.Cantidad 
from ((Articulo ART 
Inner Join lineas_traspaso LT on ART.CODIGO = LT.ARTICULO)
(inner join traspaso T on LT.codigo = T.codigo)
where  ART.temporada='B1V' AND ART.DESTINO='05' AND T.tipo='T' AND T.FECHA>'2011-03-04' AND ART.PROVEEDOR='DC'

OJO chequea tambien el uso de parentesis cuando coloques mas de un left join

se ve mas ordenado tambien hacer "bloques"

Bloque Select
Bloque From
Bloque Left Join/union
Bloque Where
Bloque Group
Bloque Order

elguille 25-03-2011 07:30:49

Cita:

Empezado por urixiv (Mensaje 394524)
Hola,
no se si en MySQL pasa, pero con el SQL Server a veces sí.
En función de como se monta el servidor las consultas, si no le pones ningún campo ni en el select ni en el where de una tabla, aunque este en el join, no hace la join....
Prueba de cambiar las inner join por left join, así podrás ver si es eso.

Espero haberte sido de ayuda

En el where hay condiciones que dependen del join, no puedo cambiarlo ya que la condicion no se cumpliria...

elguille 25-03-2011 07:37:25

A ver si así se entiende mejor

esta retorna 0 registros
Código SQL [-]
Select art.codigo,lt.cantidad  from lineas_traspaso LT
inner Join Articulo ART on ART.CODIGO = LT.ARTICULO
inner join traspaso T on LT.codigo = T.codigo
where  ART.temporada='B1V' AND lt.DESTINO='05' AND T.tipo='T' AND T.FECHA>'2011-03-04' AND proveedor='DC'

esta retorna 3 registros
Código SQL [-]
Select art.codigo from lineas_traspaso LT
inner Join Articulo ART on ART.CODIGO = LT.ARTICULO
inner join traspaso T on LT.codigo = T.codigo
where  ART.temporada='B1V' AND lt.DESTINO='05' AND T.tipo='T' AND T.FECHA>'2011-03-04' AND proveedor='DC'

La única diferencia son los campos a consultar.


He quitado los parentesis pq aparte de no servir para nada en esta consulta estaban mal colocados.
Salu2

oscarac 25-03-2011 15:36:17

Cita:

Empezado por elguille (Mensaje 394626)
He quitado los parentesis pq aparte de no servir para nada........
Salu2


quiza esté yo un poco sensible... pero como que tu respuesta no me agrado mucho:mad:


La franja horaria es GMT +2. Ahora son las 22:02:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi