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 20-05-2003
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 21
ebeltete Va por buen camino
no repetir campos

tengo 7 tablas una para cada dia de la semana (lunes.db, martes.db....) hacen referencia otras dos tablas (titu.db, clientes.db), mi pregunta es la siguiente:
un registro de la tabla titu puede estar mas de una vez en cualquiera de las tablas de los dias y puede estar en mas de un dia, cuando yo hago una consulta como esta
select titu.codigo, titu.nombre, clientes.razonsoc, titu.fechafin
from "titu.db" titu, "clientes.db" cliente, "lunes.db" lunes, "martes.db" martes, "miercoles.....
where cliente.codigo= titu.cliente and titu.codigo=lunes.codigo and titu.codigo=martes.codigo....

el tema es que quiero que el resultado no me repita los registros mas de una vez, algo asi como que el campo codigo del query sea el campo clave, pues de esta forma me aparece un titulo tantas veces como la suma de las veces que esta en cada tabla, no se si queda claro, uso tbls paradox 7
Responder Con Cita
  #2  
Antiguo 20-05-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Creo que tendrías plantearte guardarlo todo en una tabla y tener un campo que identifique el día de la semana.

por ejemplo un número del 1 al 7

Un Saludo.
Responder Con Cita
  #3  
Antiguo 22-05-2003
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 21
ebeltete Va por buen camino
Creo que no me entiendes, un mismo titulo puede estar mas de una vez en una tabla dia y en mas de un dia, por ejemplo:
un item con el nombre 'la sombra', puede estar
8 veces en tabla lunes
4 veces en tabla martes
2 veces en tabla miercoles
6 veces en tabla jueves
1 veces en tabla viernes
3 veces en tabla sabado

con la consulta Sql , obtengo una tabla donde el item 'la sombra', me aparece 24 veces, o sea la suma de veces que aparece en cada tabla, yo quiero que simplemente me aparezca una sola vez, espero haber aclarado
Responder Con Cita
  #4  
Antiguo 22-05-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
entonces te falta un

GRoup By titu.codigo, titu.nombre, clientes.razonsoc, titu.fechafin

al final de tu sentencia SQL
De todas formas, la idea de Marcos la veo muy buena. Miratelo a ver
Responder Con Cita
  #5  
Antiguo 22-05-2003
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 21
ebeltete Va por buen camino
con group by logro mi cometido, pero solo puedo hacerla funcionar correctamente con 3 tablas de dias, cuando lo hago con las 7 tablas de los 7 dias de la semana demora una eternidad en darme el resultado, es posible hacerlo de una forma que tarde menos en devolver el resultado?
Responder Con Cita
  #6  
Antiguo 22-05-2003
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 21
ebeltete Va por buen camino
Gracias por tu ayuda, encontre la forma de obtener el resultado que busco.
Ahora, siendo que siempre trabaje con el componente ttable mi pregunta es:
Por qué generalmente me es mas lento una consulta sql con un tquery que recorrer todos los registros de un ttable con un loop para buscar mis resultados?
en esta consulta, con sql tarda 9 segundos mientras que recorrer todos los registros de las 7 tablas de los dias demora tan solo 4 segundos????
Cuales son las ventajas de sql para optar por el tquery????
He leido algo sobre esto y en varios tutoriales encontre que trabajar como yo he trabajado hasta ahora no es lo "ideal" y que es mejor el tquery, yo uso tablas paradox, tal vez no sean las mejores?, me gustaria un consejo de tu parte y alguna información de que seria lo "ideal" para futuros trabajos. No soy un experto en programacion pero es mi hobbie y estoy tratando de perfeccionarme para poder comenzar a comercializar mis aplicaciones, desde ya muchas gracias un abrazo.
P.D. te ecribo el codigo de la sql con que logre mi objetivo:

select titu.nombre, clientes.razonsoc, titu.fechafin
from "lunes.db" lunes
left join "titu.db" titu on titu.codigo=lunes.codigo
left join "clientes.db" clientes on titu.cliente=clientes.codigo
where titu.fechafin< :fecha
union
select titu.nombre, clientes.razonsoc, titu.fechafin
from "martes.db" martes
left join "titu.db" titu on titu.codigo=martes.codigo
left join "clientes.db" clientes on titu.cliente=clientes.codigo
where titu.fechafin< :fecha
union
select titu.nombre, clientes.razonsoc, titu.fechafin
from "miercole.db" miercoles
left join "titu.db" titu on titu.codigo=miercoles.codigo
left join "clientes.db" clientes on titu.cliente=clientes.codigo
where titu.fechafin< :fecha
union
select titu.nombre, clientes.razonsoc, titu.fechafin
from "jueves.db" jueves
left join "titu.db" titu on titu.codigo=jueves.codigo
left join "clientes.db" clientes on titu.cliente=clientes.codigo
where titu.fechafin< :fecha
union
select titu.nombre, clientes.razonsoc, titu.fechafin
from "viernes.db" viernes
left join "titu.db" titu on titu.codigo=viernes.codigo
left join "clientes.db" clientes on titu.cliente=clientes.codigo
where titu.fechafin< :fecha
union
select titu.nombre, clientes.razonsoc, titu.fechafin
from "sabado.db" sabado
left join "titu.db" titu on titu.codigo=sabado.codigo
left join "clientes.db" clientes on titu.cliente=clientes.codigo
where titu.fechafin< :fecha
union
select titu.nombre, clientes.razonsoc, titu.fechafin
from "domingo.db" domingo
left join "titu.db" titu on titu.codigo=domingo.codigo
left join "clientes.db" clientes on titu.cliente=clientes.codigo
where titu.fechafin< :fecha

group By titu.codigo, titu.nombre, clientes.razonsoc, titu.fechafin
order by titu.fechafin
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


La franja horaria es GMT +2. Ahora son las 14:01:27.


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