Seleccionar los que no hacen match

27/08/2007 - 18:47 por Juan Carlos Flores | Informe spam
Dadas 2 tablas por ejemplo Usuarios y grupos de usuarios con relacion
en Grupo.PKGrupoUsuario y Usuario.fkGrupo como hago un select que me
devuelva solo los grupos en los que no se encuentra el usuario ?, pero
sin que me devuelva los grupos de otros Usuarios.

Saludos


Juan Carlos Flores
Choluteca, Honduras

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
27/08/2007 - 19:10 | Informe spam
Hola,

Juan,

Para este tipo de preguntas es recomendable postear la estructura de las
tablas involucradas, incluyendo indices y restricciones, asi como data de
ejemplo en forma de sentencias "insert" y los resultados esperados. De esa
forma ayudas a que el problema se entienda mejor, a que no tengamos que
gastar nuestro tiempo simulando tu ambiente, etc. La ayuda debe ser mutua, no
crees?

como hago un select que me
devuelva solo los grupos en los que no se encuentra el usuario ?, pero
sin que me devuelva los grupos de otros Usuarios.



Por casualidad quieres seleccionar los grupos que no tiene usuarios asignados?

select *
from grupo as g
where not exists (
select *
from usuario as u
where u.fkGrupo = g.PKGrupoUsuario
)

select PKGrupoUsuario from grupo
except
select fkGrupo from usuario


AMB

"Juan Carlos Flores" wrote:


Dadas 2 tablas por ejemplo Usuarios y grupos de usuarios con relacion
en Grupo.PKGrupoUsuario y Usuario.fkGrupo como hago un select que me
devuelva solo los grupos en los que no se encuentra el usuario ?, pero
sin que me devuelva los grupos de otros Usuarios.

Saludos


Juan Carlos Flores
Choluteca, Honduras


Respuesta Responder a este mensaje
#2 Luis Mata
27/08/2007 - 21:32 | Informe spam
select a.codusuario,a.grupo,b.nombreusuario
from usuario as a inner join grupo as b on a.codgrupo = b.codgrupo
where a.codusuario = 'US001'--Esta linea seria opcional si quieres reducir
la consulta a solo 1 user

"Juan Carlos Flores" escribió en el mensaje de
noticias news:

Dadas 2 tablas por ejemplo Usuarios y grupos de usuarios con relacion
en Grupo.PKGrupoUsuario y Usuario.fkGrupo como hago un select que me
devuelva solo los grupos en los que no se encuentra el usuario ?, pero
sin que me devuelva los grupos de otros Usuarios.

Saludos


Juan Carlos Flores
Choluteca, Honduras


Respuesta Responder a este mensaje
#3 Miguel Egea
28/08/2007 - 14:05 | Informe spam
Me extrañaría muchisimo que fuese esta tu estructura, pero bueno, a ver si
hay suerte y al menos el ejemplo te vale

create table grupo (idgrupo int primary key , nombregrupo varchar(100))
go
create table usuarios(idusuario int primary key, idgrupo int,nombreusuario
varchar(100))
go
alter table usuarios add constraint fk_usuarios_grupo foreign key (idgrupo)
references grupo
go
insert into grupo values(1,'grupo 1')
insert into grupo values(2,'grupo 2')
insert into grupo values(3,'grupo 2')
go
insert into usuarios values (1,2,'usuario 1')
go
declare @user int
set @user=1
select grupo.nombregrupo
from grupo
left join usuarios
on grupo.idGrupo=usuarios.idgrupo and usuarios.idusuario =@user
where usuarios.idusuario is null

Saludos
Miguel Egea
SQL Server MVP
Solid Quality Mentors
http://www.portalsql.com
"Juan Carlos Flores" wrote in message
news:

Dadas 2 tablas por ejemplo Usuarios y grupos de usuarios con relacion
en Grupo.PKGrupoUsuario y Usuario.fkGrupo como hago un select que me
devuelva solo los grupos en los que no se encuentra el usuario ?, pero
sin que me devuelva los grupos de otros Usuarios.

Saludos


Juan Carlos Flores
Choluteca, Honduras

Respuesta Responder a este mensaje
#4 Juan Carlos Flores
28/08/2007 - 15:32 | Informe spam
Bueno creí dar suficiente informacion, mil disculpas por eso, y la
respuesta que me diste es totalmente acertada, me ha funcionada ambas
pero la que se adapta totalmente a mi necesidas es usando "where not
exists".


Muchisimas gracias Alejandro por tu ayuda.


Saludos.



Juan Carlos Flores
Choluteca, Honduras



Alejandro Mesa wrote:

Hola,

Juan,

Para este tipo de preguntas es recomendable postear la estructura de
las tablas involucradas, incluyendo indices y restricciones, asi como
data de ejemplo en forma de sentencias "insert" y los resultados
esperados. De esa forma ayudas a que el problema se entienda mejor, a
que no tengamos que gastar nuestro tiempo simulando tu ambiente, etc.
La ayuda debe ser mutua, no crees?

> como hago un select que me
> devuelva solo los grupos en los que no se encuentra el usuario ?,
> pero sin que me devuelva los grupos de otros Usuarios.

Por casualidad quieres seleccionar los grupos que no tiene usuarios
asignados?

select *
from grupo as g
where not exists (
select *
from usuario as u
where u.fkGrupo = g.PKGrupoUsuario
)

select PKGrupoUsuario from grupo
except
select fkGrupo from usuario


AMB

"Juan Carlos Flores" wrote:

>
> Dadas 2 tablas por ejemplo Usuarios y grupos de usuarios con
> relacion en Grupo.PKGrupoUsuario y Usuario.fkGrupo como hago un
> select que me devuelva solo los grupos en los que no se encuentra
> el usuario ?, pero sin que me devuelva los grupos de otros Usuarios.
>
> Saludos
>
>
> Juan Carlos Flores
> Choluteca, Honduras
>
>



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