Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-03-2011
elguille elguille is offline
Miembro
 
Registrado: ene 2005
Posts: 114
Poder: 20
elguille Va por buen camino
Question 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 . 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?

Última edición por marcoszorrilla fecha: 24-03-2011 a las 11:13:24.
Responder Con Cita
  #2  
Antiguo 24-03-2011
urixiv urixiv is offline
Miembro
 
Registrado: sep 2006
Posts: 23
Poder: 0
urixiv Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 24-03-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
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
__________________
Dulce Regalo que Satanas manda para mi.....

Última edición por oscarac fecha: 24-03-2011 a las 18:27:12. Razón: me faltaron cerrar los parentesis
Responder Con Cita
  #4  
Antiguo 25-03-2011
elguille elguille is offline
Miembro
 
Registrado: ene 2005
Posts: 114
Poder: 20
elguille Va por buen camino
Cita:
Empezado por urixiv Ver Mensaje
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...
Responder Con Cita
  #5  
Antiguo 25-03-2011
elguille elguille is offline
Miembro
 
Registrado: ene 2005
Posts: 114
Poder: 20
elguille Va por buen camino
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

Última edición por elguille fecha: 25-03-2011 a las 07:40:58.
Responder Con Cita
  #6  
Antiguo 25-03-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Cita:
Empezado por elguille Ver Mensaje
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
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error con Consulta!! einarcito Varios 3 31-10-2008 13:15:39
Error en una consulta "Error creating cursor handle". cesar_gta86 Varios 3 10-08-2008 03:23:51
Error en Una Consulta... Ignacio SQL 1 19-03-2005 16:57:42
Error en consulta inetplus Varios 2 10-04-2004 21:09:23
Error en Consulta ADO Luis Castillo Conexión con bases de datos 9 19-12-2003 14:32:18


La franja horaria es GMT +2. Ahora son las 17:25:47.


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
Copyright 1996-2007 Club Delphi