Nuevamente con mi select

27/09/2005 - 14:48 por Don | Informe spam
Gracias a los que me respondieron, vamos a ver si lo que quiero en realidad
se llama select anidado...

Tengo dos tablas : Tabla_1 y Tabla_2
En tabla_1 tengo un listado de abogados y en Tabla_2 un listado de los
negocios que lleva cada uno de los abogados de Tabla_1 pero pueden haber
abogado que no tienen negocios y por lo tanto no aparecen en Tabla_2. Estos
Negocios estan clasificados y la consulta la debo hacer por un tipo de
negocio especifico y por un horario asignado a cada abogado, por ejemplo
tipo 1, horario actual, Dia 2. El resultado que necesito es este:

TABLA_HORARIOS
Codigo HoraEntrada HoraSalida
1 8:00 a.m. 12:00 p.m.

TABLA_1
Codigo Nombre CodHorario CodDia
10 Luis 1 2
15 Carlos 1 2
20 Pedro 1 2
22 Juan 1 2

TABLA_2
CodAbogado CodNegocio CodTipoNegocio
15 150 1
15 151 1
15 152 2
10 153 3
10 154 1
20 155 1

TABLA_RESULTADO_DE_LA_CONSULTA
CodAbogado NumeroDeNegociosTipo_1
10 1
15 2
20 1
22 0

La consulta que estoy utilizando es esta:

SELECT SubSelect.Codigo, count(Tabla_2.CodNegocio) NumeroRegistros
FROM Tabla_2, (SELECT Tabla_1.Codigo FROM Tabla_1, Tabla_Horarios WHERE
Convert(varchar, Tabla_Horarios.HoraEntrada,8) < Convert(varchar,
@HoraActual,8) AND Convert(varchar, Tabla_Horarios.HoraSalida,8) >
Convert(varchar, @HoraActual,8) AND Tabla_Horarios.Codigo Tabla_1.CodHorario AND Tabla_1.CodDia = @CodDia) As SubSelect
WHERE Tabla_1.Codigo = Tabla_2.CodAbogado AND Tabla_2.CodTipo = @CodTipo
GROUP BY Tabla_2.CodNegocio, SubSelect.Codigo

Pero unicamente me muestra los abogados que ya tienen negocios, necesitos la
lista completa de abogados y los que aun no tienen negocios pues que me
muestre cero.

No he podido hacer funcionar esta consulta como necesito, agradesco
muchisimo cualquier consejo o aporte !!!!

MIL GRACIAS !!!

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
27/09/2005 - 15:46 | Informe spam
Trata:

create table TABLA_HORARIOS (
Codigo int,
HoraEntrada varchar(25),
HoraSalida varchar(25)
)
go

insert into TABLA_HORARIOS values(1, '08:00:00', '12:00:00')
go

create table TABLA_1 (
Codigo int,
Nombre varchar(50),
CodHorario int,
CodDia int
)
go

insert into TABLA_1 values(10, 'Luis', 1, 2)
insert into TABLA_1 values(15, 'Carlos', 1, 2)
insert into TABLA_1 values(20, 'Pedro', 1, 2)
insert into TABLA_1 values(22, 'Juan', 1, 2)
go

create table TABLA_2 (
CodAbogado int,
CodNegocio int,
CodTipoNegocio int
)
go

insert into TABLA_2 values(15, 150, 1)
insert into TABLA_2 values(15, 151, 1)
insert into TABLA_2 values(15, 152, 2)
insert into TABLA_2 values(10, 153, 3)
insert into TABLA_2 values(10, 154, 1)
insert into TABLA_2 values(20, 155, 1)
go

declare @HoraActual varchar(25)
declare @CodDia int
declare @CodTipo int

set @HoraActual = '09:00:00'
set @CodDia = 2
set @CodTipo = 1

select
a.Codigo as CodAbogado,
count(n.CodNegocio) as NumeroDeNegociosTipo_1
from
TABLA_1 as a
left join
TABLA_HORARIOS as h
on a.CodHorario = h.Codigo
left join
TABLA_2 as n
on a.Codigo = n.CodAbogado
where
cast('1900-01-01T' + @HoraActual as datetime) between cast('1900-01-01T' +
h.HoraEntrada as datetime) and cast('1900-01-01T' + h.HoraSalida as datetime)
and a.CodDia = @CodDia
and n.CodTipoNegocio = @CodTipo
group by all
a.Codigo
go

go

Como habras notado, estoy almacenando el tiempo con el formato hh:mm:ss,
donde hh es la hora en formato militar (24 horas). De esta forma puedo
convertir de varchar a datetime y usar el operador "between".


AMB

"Don" wrote:

Gracias a los que me respondieron, vamos a ver si lo que quiero en realidad
se llama select anidado...

Tengo dos tablas : Tabla_1 y Tabla_2
En tabla_1 tengo un listado de abogados y en Tabla_2 un listado de los
negocios que lleva cada uno de los abogados de Tabla_1 pero pueden haber
abogado que no tienen negocios y por lo tanto no aparecen en Tabla_2. Estos
Negocios estan clasificados y la consulta la debo hacer por un tipo de
negocio especifico y por un horario asignado a cada abogado, por ejemplo
tipo 1, horario actual, Dia 2. El resultado que necesito es este:

TABLA_HORARIOS
Codigo HoraEntrada HoraSalida
1 8:00 a.m. 12:00 p.m.

TABLA_1
Codigo Nombre CodHorario CodDia
10 Luis 1 2
15 Carlos 1 2
20 Pedro 1 2
22 Juan 1 2

TABLA_2
CodAbogado CodNegocio CodTipoNegocio
15 150 1
15 151 1
15 152 2
10 153 3
10 154 1
20 155 1

TABLA_RESULTADO_DE_LA_CONSULTA
CodAbogado NumeroDeNegociosTipo_1
10 1
15 2
20 1
22 0

La consulta que estoy utilizando es esta:

SELECT SubSelect.Codigo, count(Tabla_2.CodNegocio) NumeroRegistros
FROM Tabla_2, (SELECT Tabla_1.Codigo FROM Tabla_1, Tabla_Horarios WHERE
Convert(varchar, Tabla_Horarios.HoraEntrada,8) < Convert(varchar,
@HoraActual,8) AND Convert(varchar, Tabla_Horarios.HoraSalida,8) >
Convert(varchar, @HoraActual,8) AND Tabla_Horarios.Codigo > Tabla_1.CodHorario AND Tabla_1.CodDia = @CodDia) As SubSelect
WHERE Tabla_1.Codigo = Tabla_2.CodAbogado AND Tabla_2.CodTipo = @CodTipo
GROUP BY Tabla_2.CodNegocio, SubSelect.Codigo

Pero unicamente me muestra los abogados que ya tienen negocios, necesitos la
lista completa de abogados y los que aun no tienen negocios pues que me
muestre cero.

No he podido hacer funcionar esta consulta como necesito, agradesco
muchisimo cualquier consejo o aporte !!!!

MIL GRACIAS !!!



Respuesta Responder a este mensaje
#2 Gonzalo Vallejos
27/09/2005 - 15:46 | Informe spam
medio lioso tu select;

Select tabla1.*, tabla2.*
from tabla1, LEFT OUTER JOIN tabla2
where tabla1.clave = tabla2.clave

mas o menos eso

"Don" escribió en el mensaje
news:
Gracias a los que me respondieron, vamos a ver si lo que quiero en


realidad
se llama select anidado...

Tengo dos tablas : Tabla_1 y Tabla_2
En tabla_1 tengo un listado de abogados y en Tabla_2 un listado de los
negocios que lleva cada uno de los abogados de Tabla_1 pero pueden haber
abogado que no tienen negocios y por lo tanto no aparecen en Tabla_2.


Estos
Negocios estan clasificados y la consulta la debo hacer por un tipo de
negocio especifico y por un horario asignado a cada abogado, por ejemplo
tipo 1, horario actual, Dia 2. El resultado que necesito es este:

TABLA_HORARIOS
Codigo HoraEntrada HoraSalida
1 8:00 a.m. 12:00 p.m.

TABLA_1
Codigo Nombre CodHorario CodDia
10 Luis 1 2
15 Carlos 1 2
20 Pedro 1 2
22 Juan 1 2

TABLA_2
CodAbogado CodNegocio CodTipoNegocio
15 150 1
15 151 1
15 152 2
10 153 3
10 154 1
20 155 1

TABLA_RESULTADO_DE_LA_CONSULTA
CodAbogado NumeroDeNegociosTipo_1
10 1
15 2
20 1
22 0

La consulta que estoy utilizando es esta:

SELECT SubSelect.Codigo, count(Tabla_2.CodNegocio) NumeroRegistros
FROM Tabla_2, (SELECT Tabla_1.Codigo FROM Tabla_1, Tabla_Horarios WHERE
Convert(varchar, Tabla_Horarios.HoraEntrada,8) < Convert(varchar,
@HoraActual,8) AND Convert(varchar, Tabla_Horarios.HoraSalida,8) >
Convert(varchar, @HoraActual,8) AND Tabla_Horarios.Codigo > Tabla_1.CodHorario AND Tabla_1.CodDia = @CodDia) As SubSelect
WHERE Tabla_1.Codigo = Tabla_2.CodAbogado AND Tabla_2.CodTipo = @CodTipo
GROUP BY Tabla_2.CodNegocio, SubSelect.Codigo

Pero unicamente me muestra los abogados que ya tienen negocios, necesitos


la
lista completa de abogados y los que aun no tienen negocios pues que me
muestre cero.

No he podido hacer funcionar esta consulta como necesito, agradesco
muchisimo cualquier consejo o aporte !!!!

MIL GRACIAS !!!


Respuesta Responder a este mensaje
#3 Diego
27/09/2005 - 17:19 | Informe spam
Yo haría lo siguiente

SELECT Tabla_1.Codigo Count(CodNegocio) NumeroNegocios
FROM (Tabla_1 LEFT OUTER JOIN Tabla_2 ON Tabla_1.Codigo Tabla_2.CodigoAbogado)
INNER JOIN Tabla_Horarios ON
Tabla_1.CodHorario = Tabla_Horarios.Codigo
WHERE getTime() BETWEEN Tabla_Horarios.HoraEntrada AND
Tabla_Horarios.HoraSalida
GROUP BY Tabla_1.Codigo

la función getTime() no existe en el SQL así que te tendrás que implementar
alguna función que te devuelva la hora del sistema.

Espero que te sirva un saludo.




"Don" escribió en el mensaje
news:
Gracias a los que me respondieron, vamos a ver si lo que quiero en


realidad
se llama select anidado...

Tengo dos tablas : Tabla_1 y Tabla_2
En tabla_1 tengo un listado de abogados y en Tabla_2 un listado de los
negocios que lleva cada uno de los abogados de Tabla_1 pero pueden haber
abogado que no tienen negocios y por lo tanto no aparecen en Tabla_2.


Estos
Negocios estan clasificados y la consulta la debo hacer por un tipo de
negocio especifico y por un horario asignado a cada abogado, por ejemplo
tipo 1, horario actual, Dia 2. El resultado que necesito es este:

TABLA_HORARIOS
Codigo HoraEntrada HoraSalida
1 8:00 a.m. 12:00 p.m.

TABLA_1
Codigo Nombre CodHorario CodDia
10 Luis 1 2
15 Carlos 1 2
20 Pedro 1 2
22 Juan 1 2

TABLA_2
CodAbogado CodNegocio CodTipoNegocio
15 150 1
15 151 1
15 152 2
10 153 3
10 154 1
20 155 1

TABLA_RESULTADO_DE_LA_CONSULTA
CodAbogado NumeroDeNegociosTipo_1
10 1
15 2
20 1
22 0

La consulta que estoy utilizando es esta:

SELECT SubSelect.Codigo, count(Tabla_2.CodNegocio) NumeroRegistros
FROM Tabla_2, (SELECT Tabla_1.Codigo FROM Tabla_1, Tabla_Horarios WHERE
Convert(varchar, Tabla_Horarios.HoraEntrada,8) < Convert(varchar,
@HoraActual,8) AND Convert(varchar, Tabla_Horarios.HoraSalida,8) >
Convert(varchar, @HoraActual,8) AND Tabla_Horarios.Codigo > Tabla_1.CodHorario AND Tabla_1.CodDia = @CodDia) As SubSelect
WHERE Tabla_1.Codigo = Tabla_2.CodAbogado AND Tabla_2.CodTipo = @CodTipo
GROUP BY Tabla_2.CodNegocio, SubSelect.Codigo

Pero unicamente me muestra los abogados que ya tienen negocios, necesitos


la
lista completa de abogados y los que aun no tienen negocios pues que me
muestre cero.

No he podido hacer funcionar esta consulta como necesito, agradesco
muchisimo cualquier consejo o aporte !!!!

MIL GRACIAS !!!


Respuesta Responder a este mensaje
#4 Don
28/09/2005 - 00:09 | Informe spam
Gracias a todos, ya tengo por lo menos mas opciones.. probare y les estaré
comentado...


"Diego" escribió en el mensaje
news:
Yo haría lo siguiente

SELECT Tabla_1.Codigo Count(CodNegocio) NumeroNegocios
FROM (Tabla_1 LEFT OUTER JOIN Tabla_2 ON Tabla_1.Codigo > Tabla_2.CodigoAbogado)
INNER JOIN Tabla_Horarios ON
Tabla_1.CodHorario = Tabla_Horarios.Codigo
WHERE getTime() BETWEEN Tabla_Horarios.HoraEntrada AND
Tabla_Horarios.HoraSalida
GROUP BY Tabla_1.Codigo

la función getTime() no existe en el SQL así que te tendrás que
implementar
alguna función que te devuelva la hora del sistema.

Espero que te sirva un saludo.




"Don" escribió en el mensaje
news:
Gracias a los que me respondieron, vamos a ver si lo que quiero en


realidad
se llama select anidado...

Tengo dos tablas : Tabla_1 y Tabla_2
En tabla_1 tengo un listado de abogados y en Tabla_2 un listado de los
negocios que lleva cada uno de los abogados de Tabla_1 pero pueden haber
abogado que no tienen negocios y por lo tanto no aparecen en Tabla_2.


Estos
Negocios estan clasificados y la consulta la debo hacer por un tipo de
negocio especifico y por un horario asignado a cada abogado, por ejemplo
tipo 1, horario actual, Dia 2. El resultado que necesito es este:

TABLA_HORARIOS
Codigo HoraEntrada HoraSalida
1 8:00 a.m. 12:00 p.m.

TABLA_1
Codigo Nombre CodHorario CodDia
10 Luis 1 2
15 Carlos 1 2
20 Pedro 1 2
22 Juan 1 2

TABLA_2
CodAbogado CodNegocio CodTipoNegocio
15 150 1
15 151 1
15 152 2
10 153 3
10 154 1
20 155 1

TABLA_RESULTADO_DE_LA_CONSULTA
CodAbogado NumeroDeNegociosTipo_1
10 1
15 2
20 1
22 0

La consulta que estoy utilizando es esta:

SELECT SubSelect.Codigo, count(Tabla_2.CodNegocio) NumeroRegistros
FROM Tabla_2, (SELECT Tabla_1.Codigo FROM Tabla_1, Tabla_Horarios WHERE
Convert(varchar, Tabla_Horarios.HoraEntrada,8) < Convert(varchar,
@HoraActual,8) AND Convert(varchar, Tabla_Horarios.HoraSalida,8) >
Convert(varchar, @HoraActual,8) AND Tabla_Horarios.Codigo >> Tabla_1.CodHorario AND Tabla_1.CodDia = @CodDia) As SubSelect
WHERE Tabla_1.Codigo = Tabla_2.CodAbogado AND Tabla_2.CodTipo = @CodTipo
GROUP BY Tabla_2.CodNegocio, SubSelect.Codigo

Pero unicamente me muestra los abogados que ya tienen negocios, necesitos


la
lista completa de abogados y los que aun no tienen negocios pues que me
muestre cero.

No he podido hacer funcionar esta consulta como necesito, agradesco
muchisimo cualquier consejo o aporte !!!!

MIL GRACIAS !!!






email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida