Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo Hace 4 Semanas
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Buscar valores en dos campos distintos

Hola a todos

Tengo un select
Código SQL [-]
select
coalesce(cant_a,0)
from producto_bodega pp,producto v ,empresa e
where (cod_producto=:codigo or cod_barra=:codigo)
And   key_bodega=:key_bodega and v.operativo='S' and v.key_empresa=e.key_empresa
And v.key_empresa=:key_empresa and pp.key_producto=v.key_producto

Si lo uso asi tal cual veo la consulta en ibexpert en el performance analysis y me dice que se usa la bisqyueda en 18000 registros que es la cantidad de registros que hay en la tabla producto (me regresa solo un registro q es lo normal)

Pero si solo busco por codigo si usar or Me dice q solo busco un registro q es lo correcto

Eso talvez me haga una busqueda, hasta ahora va rapido , pero mi duda es porque con or busca en toda a tabla , como hacen para que el sistema pueda buscar en un campo o en otro un valor sin usar like
__________________
IVAND
Responder Con Cita
  #2  
Antiguo Hace 4 Semanas
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo que más o menos se entiende lo que quieres, pero para una mejor respuesta deberías darnos los campos de las tablas que afecta y exactamente lo que quieres conseguir.
Te recomiendo que leas esto:
Respuestas universales sobre SQL/Base de datos
Responder Con Cita
  #3  
Antiguo Hace 4 Semanas
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Para empezar te falta utilizar los ALIAS en cada campo.
De lo contrario, un campo que esté en dos tablas se convierte en ambiguo.
Código SQL [-]
select coalesce(???.cant_a, 0)
from producto_bodega pp, producto v, empresa e
where
(???.cod_producto = :codigo or ???.cod_barra = :codigo) and
???.key_bodega = :key_bodega and
v.operativo = 'S' and
v.key_empresa = e.key_empresa and
v.key_empresa = :key_empresa and
pp.key_producto = v.key_producto

Por otro lado, habría que saber cómo se unen las tablas (por ejemplo, mediante las Primary Keys de cada una).
Sin eso no se puede analizar el SQL.

Por último te recomiendo utilizar JOINs ya que hacen la consulta mucho más comprensible, y tienes formas de optimizar la consulta (JOIN, LEFT JOIN)
Código SQL [-]
select coalesce(???.cant_a, 0)
from producto_bodega pp
join producto v on pp.key_producto = v.key_producto
join empresa e on v.key_empresa = e.key_empresa
where
-- Filtro general (bodega+empresa + operativo)
???.key_bodega = :key_bodega and
v.key_empresa = :key_empresa and
v.operativo = 'S' and
-- Filtro especifico (codigo de producto o codigo de barra)
(???.cod_producto = :codigo or ???.cod_barra = :codigo)
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
count a valores distintos de una columna matersey Impresión 2 28-09-2016 17:42:45
Duda contar valores distintos ldelmor Varios 1 16-07-2012 19:47:51
Valores distintos trex2000 SQL 0 03-10-2006 17:12:31
Sumar valores de distintos formularios Jayle Tablas planas 1 02-08-2005 11:28:47
Obtener filas que contienen dos o más valores distintos Angel Firebird e Interbase 3 14-10-2003 17:27:56


La franja horaria es GMT +2. Ahora son las 16:52:41.


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