Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Restringir salida de datos

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Restringir salida de datos Responder citando

Voy a tartar de explicar mejor que es lo que quiero. Por delante: estoy trabajando con tablas Paradox.

Tengo esta consulta:
Código:
SELECT A.Apellidos, A.Nombre, A.Domicilio, A.Cpostal,
       B.Poblacion, C.Nombre Provincia
  FROM 'Persona.db' A, 'Poblacion.db' B,
       'Tablas.db' C
 WHERE A.Municipio = B.Codigo
   AND C.Tabla = 'PV' AND A.Provincia = C.Codigo
 ORDER BY Cpostal, Apellidos, Nombre

de forma que obtengo una serie de filas con datos para cumplimentar etiquetas postales. Ahora bien, lo que necesito es sacar una única etiqueta por domicilio, de forma que si en una misma casa viven tres personas se obtenga una sola fila, independientemente de quien sea el destinatario del envio.

Llevo toda la mañana dándole vueltas a la consulta y no se me ocurre nada. ¿A alguien se le ocurre alguna manera?
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Necesitas agrupar tu consulta por domicilio. Checate en la ayuda del SQL GRUOP BY.

Código:

SELECT A.Apellidos, A.Nombre, A.Domicilio, A.Cpostal,
       B.Poblacion, C.Nombre Provincia
  FROM 'Persona.db' A, 'Poblacion.db' B,
       'Tablas.db' C
 WHERE A.Municipio = B.Codigo
   AND C.Tabla = 'PV' AND A.Provincia = C.Codigo
 ORDER BY Cpostal, Apellidos, Nombre
 GROUP BY A.Domicilio ...


no tengo forma de probarlo Confused pero intenta con GROUP BY
_________________
Quien hace una pregunta teme parecer un ignorante durante cinco minutos, quien no pregunta se mantiene ignorante toda la vida.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

El problema es que si pongo GROUP BY en la claúsula deben ir todos los campos de la SELECT; no puede ir sólo uno de ellos.

_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)


Ultima edición por Angel el Vie 29 Sep, 2006 7:17 am, editado 2 veces
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Asi es... es necesario agregar todos los campos.... pero como te digo no tengo forma de probarlo... no se si DISTINCT te devuelva un resultado diferente... Rolling Eyes

Código:

SELECT DISTINCT A.Apellidos,....


Saludos
_________________
Quien hace una pregunta teme parecer un ignorante durante cinco minutos, quien no pregunta se mantiene ignorante toda la vida.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Gracias por las respuestas. SELECT DISTINCT tampoco me vale porque busca que todos los campos sean distintos.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Posible mente no resuelva el problema pero analizando un poco me he dado cuenta de lo siguiente

Código:
Tabla A
id-nombre-domicilio o codigo
1 - Angel - España 25
2 - Cesar - España 25
3 - José l - España 25
4 - otro - Mundo 105 -
5 - otro - Mundo 105 -
6 - otro - Mundo 104 -
7 - otro - Mundo 103 -


bien aqui lo que veo es algo de la siguiente manera, dependiendo la persona quien reciba el documento.. al parecer la informacion, esta correcta, nada mas que existen 3 personas en la misma casa de España 25, pero cada una de ellas es una Persona Distinta, si a lo mejor, me preguntaras quien vivie en España 25 diriamos que (Angel, Cesar, José)
pero a quien le debo enviar el paquete, en todo caso seria a la persona que lo ha solicitado...

en muchos casos.. aqui en Mex, los partidos politicos, envian cartas para los ciudadanos, en algunos casos muchos de los ciudadados, vienen en las mismas casas, con la misma direccion y personas diferentes, un edificion de rentas (pisos) pera a cada uno le llega la dichosa carta, a hora puede que lo mas viable seria, determinar que persona y a quien se le envia el paquete o la sola direccion, pero esto es lo mismo de un salon de clases, existen 10 alumnos con 10 materias, existe una invitacion para 1 sola materia entonces lo que quieres es que solo salgan los alumnos de la materia que tu elegiste, 1 materia y saldrian 4 alumnos que tienen la misma materia.

ahora no podemos decir la materia x envia la invitacion.. y los que la lleven que lleguen? es algo asi como le entiendo...

en todo caso seria nada mas una cosulta para la Tabla C, por medio del Codigo puesto que se repite y tomarias el Primer registro quedando algo asi

Código:

Tabla C         Tabla A
Codigo         id-nombre-domicilio o codigo
España 25       1 - Angel - España 25
            2 - Cesar - España 25
            3 - José l - España 25
---------------------------------------------------
Mundo 105      4 - otro - Mundo 105 -
            5 - otro - Mundo 105 -
---------------------------------------------------
Mundo 104      6 - otro - Mundo 104 -
--------------------------------------------------
Mundo 103      7 - otro - Mundo 103 -


haciendo la relacion de 1 a muchos.. un codigo muchas personas
una direccion muchas personas
y tomando siempre el primer registro del filtro que te salga, solo enviarias una "invitacion" o "paquete" a un solo desitantario quien no importa solo seria a una direccion En particular.... espero que

puedas cambiar un poco la forma de verlo...
por las dudas, tambien puedes ponernos algunos campos de mas para poder ayudarte...
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Gracias César. Es, precisamente, un encargo de un partido político. Cuando hay una reunión o un mitin envían cartas a todos los afiliados de, por ejemplo, la ciudad de Toledo. Supongamos que, como dices, en España 25 viven Ángel, César y José. Lo que quieren, para ahorrarse dinero es que en vez de generarse tres etiquetas, uan para cada uno, salga una sola para esa dirección España 25 independientemente de quien sea el nombre a quien va dirigida la carta. Digamos que debería quedar una etiqueta que podría poner, por ejemplo:

A todos los residentes
C/ España, 15
TOLEDO

Pero poniendo un nombre. Podría hacerlo con una tabla temporal, pero quisera evitarlo.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

jaja en alguna parte lei un chiste sobre nosotros los programadores, sobre que TODO podemos solucionar....

a veces lo que estan pidiendo.. es meramente muy dificil, pero podria darse el caso con lo anterior, aun asi, siempre nos llaman... para hacer Milagros...


buscar en el codigo de la tabla C y si la busqueda te devuelve resultados dentro de la tabla A, significa que alguien vive

asi pondrias las etiquetas que solo necesitas... ejemplo

España 25 --> Tiene Habitantes? Tabla A <--tiene 3 registros

en el caso siguiente, para solucionarlos, solo deberias saber que la tabla A contiene registros cada vez que te muevas.
en una direccion de la Tabla C.

Estamos en contacto.. cualquier cosa.. aqui estamos...
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Gracias a los dos por las ideas. Al final no me ha quedado más remedio que hacerme una tabla temporal: por más vueltas que di no encontré como hacer una select que me sacara sólo los datos que necesitaba.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.