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 24-11-2014
Avatar de Luis M.
[Luis M.] Luis M. is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Ripollet - Barcelona
Posts: 212
Poder: 21
Luis M. Va por buen camino
Solo mostrar un registro en tabla maestra

Hola.
Necesito sacar de una consulta, todos los registros de la tabla maestra que en la tabla detalle cumpla unas condiciones.
Pero solo necesito que se muestre un registro de esta tabla maestra.
Trabajo con firebird 2.5


Tengo esta consulta:
cencargos->Tabla maestra de los encargos.
encargos->Tabla detalle con los artículos.
En la tabla encargos puede haber varios artículos de un encargo que cumplan con la condición, por eso me muestra los registros duplicados.

Código SQL [-]
select
    cencargos.numero,
    cencargos.nombre_cliente,
    encargos.descripcion,
    encargos.familia,
    cencargos.f_evento
    from cencargos
   inner join encargos on (cencargos.numero = encargos.numero)
where
   (
      (cencargos.cerrado = 'N')
   and 
      (encargos.gestion_taller = 'SI')
   and 
      (encargos.f_entregado is null )
   )
order by cencargos.numero

Esta consulta me devuelve algunos registros con el mismo número de encargo y solo quiero que se muestre uno de ellos.

Gracias por vuestra ayuda.
Un saludo.
Responder Con Cita
  #2  
Antiguo 24-11-2014
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.757
Poder: 21
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Puedes utilizar DISTINCT

Código SQL [-]
select DISTINCT
    cencargos.numero,
    cencargos.nombre_cliente,
    encargos.descripcion,
    encargos.familia,
    cencargos.f_evento
    from cencargos
   inner join encargos on (cencargos.numero = encargos.numero)
where
   (
      (cencargos.cerrado = 'N')
   and 
      (encargos.gestion_taller = 'SI')
   and 
      (encargos.f_entregado is null )
   )
order by cencargos.numero

otra opción es hacer una subconsulta:

Código SQL [-]
select 
    cencargos.numero,
    cencargos.nombre_cliente,
    encargos.descripcion,
    encargos.familia,
    cencargos.f_evento
    from cencargos
where
(
   (cencargos.cerrado = 'N')
and 
   cencargos.numero in 
   (
      select numero from encargos 
      where
         (
            (encargos.gestion_taller = 'SI')
         and 
            (encargos.f_entregado is null )
         )
   )
)
order by cencargos.numero
Responder Con Cita
  #3  
Antiguo 24-11-2014
Avatar de Luis M.
[Luis M.] Luis M. is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Ripollet - Barcelona
Posts: 212
Poder: 21
Luis M. Va por buen camino
Hola.
Gracias por responder.
Ya había probado con DISTINCT pero en este caso no sirve porque DISTINCT actúa sobre todos campos.
La subconsulta tampoco funciona.
En el select intervienen campos de las dos tablas.
Adjunto imagen ( a ver si se ve bien)
Imágenes Adjuntas
Tipo de Archivo: jpg Capture24-11-2014-12.15.27.jpg (64,4 KB, 12 visitas)
Responder Con Cita
  #4  
Antiguo 24-11-2014
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.412
Poder: 22
fjcg02 Va camino a la fama
Hola,
es un poco raro lo que pides, porque si quieres ver sólo datos de encargos, no sé porqué incluyes datos de los artículos, pero bueno.

Si quieres hacer eso, tendrás que decidir qué artículo quieres mostrar de cada encargo, el primero, el último o lo que quieras.

Para eso, debes agrupar la consulta.

Código SQL [-]
select
    cencargos.numero,
    cencargos.nombre_cliente,
    first(encargos.descripcion),
    first(encargos.familia),
    first(cencargos.f_evento)
    from cencargos
   inner join encargos on (cencargos.numero = encargos.numero)
where
   (
      (cencargos.cerrado = 'N')
   and 
      (encargos.gestion_taller = 'SI')
   and 
      (encargos.f_entregado is null )
   )
order by cencargos.numero
group by 
    cencargos.numero,
    cencargos.nombre_cliente
Yo he decidido poner el primer artículo, porque supongo ( mucho suponer) que quieres lo primero que esté pendiente de cada encargo. Ahora, que del encargo 00020 quieras mostrar la jaqueteta o el vestit..

Aunque no veo yo que tenga mucho sentido lo que te propones...

Espero que te ayude.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #5  
Antiguo 25-11-2014
Avatar de Luis M.
[Luis M.] Luis M. is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Ripollet - Barcelona
Posts: 212
Poder: 21
Luis M. Va por buen camino
Gracias por responder, pero tampoco me sirvió.
Aunque los agrupe, me siguen saliendo repetidos los números de encargo.
Voy a intentar otras alternativas.
Otra cuestión...
Como sería la consulta para que en la tabla de artículos solo me saliesen
un artículo por encargo?
Un saludo.
Responder Con Cita
  #6  
Antiguo 25-11-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.264
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
El problema es que no está claro lo que quieres.
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
Mostrar solo 1 registro de una tabla fast reports giocatore Impresión 1 01-08-2013 09:05:12
mostrar un registro solo de un query Patricio Varios 3 18-11-2008 21:31:27
Mostrar un solo registro en un dbgrid Ivan_25 C++ Builder 5 03-11-2005 13:40:13
mostrar SOLO cliente de los que tengo un sólo registro Giniromero SQL 15 11-06-2004 13:33:19
Borrar registro en tabla maestra y todos los de la tabla detalles correspondientes jealousy Conexión con bases de datos 7 14-10-2003 13:46:23


La franja horaria es GMT +2. Ahora son las 19:49:05.


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