Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Como hago?'

Estas en el tema de Como hago?' en el foro de SQL Server en Foros del Web. Hola! Estoy tratando de hacer un query y no me sale, no se si se podra hacer. Estoy tratando de sacar una tabla de esta ...
  #1 (permalink)  
Antiguo 25/10/2005, 08:41
 
Fecha de Ingreso: octubre-2004
Mensajes: 10
Antigüedad: 19 años, 7 meses
Puntos: 0
Como hago?'

Hola!
Estoy tratando de hacer un query y no me sale, no se si se podra hacer.

Estoy tratando de sacar una tabla de esta forma

Cliente - Domicilios

donde en la tabla de clientes tengo

id
Nombre
IdCalle

y en la de domicilios tengo

id
Calle
Localidad

Los clientes pueden tener mas de un domicilio, y quiero que en un solo query, me traiga una lista de los clientes, y en el otro campo, todos los domicilios que tenga de forma agrupada, no que me salga un registro de por cada domicilio del mismo cliente,
Tendria que ser asi.


Cliente1 - Domicilio1, Domicilio2

No

Cliente 1 - Domicilio1
Cliente1 - Domicilio2

Alguna idea?
  #2 (permalink)  
Antiguo 25/10/2005, 10:20
Avatar de Punktruka  
Fecha de Ingreso: enero-2005
Ubicación: Santiago, Chile
Mensajes: 215
Antigüedad: 19 años, 3 meses
Puntos: 0
select c.nombre, d.calle, d.localidad
from cliente c inner join domicilio d
on c.IdCalle=d.id
__________________
y nada más
porke el cielo ya está de nuevo torvo y sin estrellas kon helikópteros y SIN DIOS....
  #3 (permalink)  
Antiguo 25/10/2005, 11:46
 
Fecha de Ingreso: octubre-2004
Mensajes: 10
Antigüedad: 19 años, 7 meses
Puntos: 0
Eso me traeria lo mismo que antes.
Ej:

Tabla Cl:
id Cliente Calle
1 Cliente1 1
2 Cliente1 2
3 Cliente2 3
4 Cliente4 4

Tabla Dire

id Calle Localidad
1 Parana Villa Adelina
2 9 de julio Capital
3 San Lorenzo Munro
4 Aguero Munro

Si hago

SELECT dbo.Cl.Cliente, dbo.Dire.Calle, dbo.Dire.Localidad
FROM dbo.Cl INNER JOIN
dbo.Dire ON dbo.Cl.Calle = dbo.Dire.id

me trae

Cliente Calle Localidad
Cliente1 Parana Villa Adelina
Cliente1 9 de julio Capital
Cliente2 San Lorenzo Munro
Cliente4 Aguero Munro

Y lo que quiero obtener es:

Cliente Direcciones
Cliente1 Parana Villa Adelina - 9 de julio Capital
Cliente2 San Lorenzo Munro - Aguero Munro

Osea quiero agrupar por cliente las direcciones de cada cliente
  #4 (permalink)  
Antiguo 25/10/2005, 13:19
Avatar de Punktruka  
Fecha de Ingreso: enero-2005
Ubicación: Santiago, Chile
Mensajes: 215
Antigüedad: 19 años, 3 meses
Puntos: 0
estás trabajando con procedimientos almacenados o directo del asp???
__________________
y nada más
porke el cielo ya está de nuevo torvo y sin estrellas kon helikópteros y SIN DIOS....
  #5 (permalink)  
Antiguo 25/10/2005, 13:40
 
Fecha de Ingreso: octubre-2004
Mensajes: 10
Antigüedad: 19 años, 7 meses
Puntos: 0
uso procedimientos almacenados y asp.net
  #6 (permalink)  
Antiguo 25/10/2005, 14:28
Avatar de Punktruka  
Fecha de Ingreso: enero-2005
Ubicación: Santiago, Chile
Mensajes: 215
Antigüedad: 19 años, 3 meses
Puntos: 0
alome te puede ayudar haciendolo con cursor y una tabla temporal ,,y el resultado agrupandolo o haciendole un distinct, etc...
ojala te sirva.. igual de acá no lo probé, pero por si acaso.

Código:
declare @IdCalle int
declare @NomCliente varchar(100)
declare @NomCalle varchar(100)


CREATE TABLE #datos
([NomCliente] [nvarchar] (50)null, 
[Direx] [nvarchar] (50)null)
ON [PRIMARY]

declare CurInfo cursor for
			select  id_calle, calle
			from domicilio
			order by id_calle
OPEN cur
FETCH CurInfo INTO  @IdCalle, @NomCalle 
	WHILE @@FETCH_STATUS =0
	BEGIN	
		set @NomCliente =(select nombre from cliente where id_calle=@IdCalle)
	
		insert into #datos (NomCliente, @NomCalle)
		values (@NomCliente, @NomCalle)
	
	FETCH CurInfo INTO  @IdCalle, @NomCalle 
	END
CLOSE CurInfo

DEALLOCATE CurInfo

select   *  from #datos
group by NomCliente

drop table #datos
__________________
y nada más
porke el cielo ya está de nuevo torvo y sin estrellas kon helikópteros y SIN DIOS....
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:58.