 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Jue 28 Sep, 2006 1:36 pm Asunto: Restringir salida de datos |
|
|
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 |
|
 |
Buildero Master


Registrado: 23 Dic 2003Mensajes: 523Ubicación: Puebla, México
|
Publicado: Jue 28 Sep, 2006 3:47 pm Asunto: |
|
|
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 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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Jue 28 Sep, 2006 4:18 pm Asunto: |
|
|
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 |
|
 |
Buildero Master


Registrado: 23 Dic 2003Mensajes: 523Ubicación: Puebla, México
|
Publicado: Jue 28 Sep, 2006 4:27 pm Asunto: |
|
|
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...
| 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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Vie 29 Sep, 2006 12:25 am Asunto: |
|
|
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... _________________
 |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Vie 29 Sep, 2006 7:23 am Asunto: |
|
|
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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Vie 29 Sep, 2006 8:27 am Asunto: |
|
|
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... _________________
 |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Dom 01 Oct, 2006 9:49 am Asunto: |
|
|
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 |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|