consulta sql

04/01/2006 - 23:29 por anonimo | Informe spam
tengo un problema.espero puedan ayudarme
tengo dos tablas una es persona y la otra telefono_persona, lo que necesito
es obtener los datos de las personas + el campo de numero_telefono (numero de
casa) de la tabla telefono_persona, en la tabla telefono_persona esta el
campo tipo_telefono (casa, trabajo, etc) he estado haciendo lo siguiente:
select tb1.nombre, tb2.numtel
from persona tb1
left outer join telefono_persona tb2 on tb1.codpersona= tb2.codpersona where
tb2.tipo_telefono='1'

pero eso me restringe al conjunto de resultados de las personas que tengan
numero de telefono ='1', yo lo que quiero es todas las personas + el numero
telefono casa si es que lo tienen

gracias de antemano.

Preguntas similare

Leer las respuestas

#6 anonimo
05/01/2006 - 22:01 | Informe spam
muchas gracias por responder.
Una pregunta adicional, como haría la sentencia si la persona tuviera
mas de un mismo tipo_telefono=1 registrado. para que solo devuelva uno de
elloscualquiera sea.

gracias.


"Alejandro Mesa" escribió:

anonimo,

La idea con la que empezastes la consulta esta correcta, solo que en vez de
filtrar en la clausula "where" (por eso restringes el resultado final), debes
usar la condicion en el "join".

select
tb1.nombre,
tb2.numtel
from
persona tb1
left outer join
telefono_persona tb2
on tb1.codpersona= tb2.codpersona and tb2.tipo_telefono='1'
go


AMB



"anonimo" wrote:

> tengo un problema.espero puedan ayudarme
> tengo dos tablas una es persona y la otra telefono_persona, lo que necesito
> es obtener los datos de las personas + el campo de numero_telefono (numero de
> casa) de la tabla telefono_persona, en la tabla telefono_persona esta el
> campo tipo_telefono (casa, trabajo, etc) he estado haciendo lo siguiente:
> select tb1.nombre, tb2.numtel
> from persona tb1
> left outer join telefono_persona tb2 on tb1.codpersona= tb2.codpersona where
> tb2.tipo_telefono='1'
>
> pero eso me restringe al conjunto de resultados de las personas que tengan
> numero de telefono ='1', yo lo que quiero es todas las personas + el numero
> telefono casa si es que lo tienen
>
> gracias de antemano.
Respuesta Responder a este mensaje
#7 Alejandro Mesa
05/01/2006 - 22:18 | Informe spam
anonimo,

En ese caso, personalmente me iria por la solucion que posteo Maxi y usaria
la funcion de grupo MAX.

Dejame tomar prestada la sentencia de Maxi.

select
a.nombre,
b.max_numtel
from
dbo.persona as a
left join
(
select idpersona, max(numtel) as max_numtel
from dbo.tipo_telefono
where tiptel='1'
group by idpersona
) as b
on a.idpersona = b.idpersona
go


AMB

"anonimo" wrote:

muchas gracias por responder.
Una pregunta adicional, como haría la sentencia si la persona tuviera
mas de un mismo tipo_telefono=1 registrado. para que solo devuelva uno de
elloscualquiera sea.

gracias.


"Alejandro Mesa" escribió:

> anonimo,
>
> La idea con la que empezastes la consulta esta correcta, solo que en vez de
> filtrar en la clausula "where" (por eso restringes el resultado final), debes
> usar la condicion en el "join".
>
> select
> tb1.nombre,
> tb2.numtel
> from
> persona tb1
> left outer join
> telefono_persona tb2
> on tb1.codpersona= tb2.codpersona and tb2.tipo_telefono='1'
> go
>
>
> AMB
>
>
>
> "anonimo" wrote:
>
> > tengo un problema.espero puedan ayudarme
> > tengo dos tablas una es persona y la otra telefono_persona, lo que necesito
> > es obtener los datos de las personas + el campo de numero_telefono (numero de
> > casa) de la tabla telefono_persona, en la tabla telefono_persona esta el
> > campo tipo_telefono (casa, trabajo, etc) he estado haciendo lo siguiente:
> > select tb1.nombre, tb2.numtel
> > from persona tb1
> > left outer join telefono_persona tb2 on tb1.codpersona= tb2.codpersona where
> > tb2.tipo_telefono='1'
> >
> > pero eso me restringe al conjunto de resultados de las personas que tengan
> > numero de telefono ='1', yo lo que quiero es todas las personas + el numero
> > telefono casa si es que lo tienen
> >
> > gracias de antemano.
Respuesta Responder a este mensaje
#8 anonimo
05/01/2006 - 23:19 | Informe spam
Gracias por tu respuesta, funciona muy bien.

"Alejandro Mesa" escribió:

anonimo,

En ese caso, personalmente me iria por la solucion que posteo Maxi y usaria
la funcion de grupo MAX.

Dejame tomar prestada la sentencia de Maxi.

select
a.nombre,
b.max_numtel
from
dbo.persona as a
left join
(
select idpersona, max(numtel) as max_numtel
from dbo.tipo_telefono
where tiptel='1'
group by idpersona
) as b
on a.idpersona = b.idpersona
go


AMB

"anonimo" wrote:

> muchas gracias por responder.
> Una pregunta adicional, como haría la sentencia si la persona tuviera
> mas de un mismo tipo_telefono=1 registrado. para que solo devuelva uno de
> elloscualquiera sea.
>
> gracias.
>
>
> "Alejandro Mesa" escribió:
>
> > anonimo,
> >
> > La idea con la que empezastes la consulta esta correcta, solo que en vez de
> > filtrar en la clausula "where" (por eso restringes el resultado final), debes
> > usar la condicion en el "join".
> >
> > select
> > tb1.nombre,
> > tb2.numtel
> > from
> > persona tb1
> > left outer join
> > telefono_persona tb2
> > on tb1.codpersona= tb2.codpersona and tb2.tipo_telefono='1'
> > go
> >
> >
> > AMB
> >
> >
> >
> > "anonimo" wrote:
> >
> > > tengo un problema.espero puedan ayudarme
> > > tengo dos tablas una es persona y la otra telefono_persona, lo que necesito
> > > es obtener los datos de las personas + el campo de numero_telefono (numero de
> > > casa) de la tabla telefono_persona, en la tabla telefono_persona esta el
> > > campo tipo_telefono (casa, trabajo, etc) he estado haciendo lo siguiente:
> > > select tb1.nombre, tb2.numtel
> > > from persona tb1
> > > left outer join telefono_persona tb2 on tb1.codpersona= tb2.codpersona where
> > > tb2.tipo_telefono='1'
> > >
> > > pero eso me restringe al conjunto de resultados de las personas que tengan
> > > numero de telefono ='1', yo lo que quiero es todas las personas + el numero
> > > telefono casa si es que lo tienen
> > >
> > > gracias de antemano.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida