Autor
		 | 
		
			Tema: [SQL] Problema con consulta  (Leído 2,754 veces)
		 | 
	 
 
	
		
			
				
					
						
							darknlee
							
								
								  Desconectado
								Mensajes: 5
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
Hola quería ver si me podéis echar una mano con una consulta SQL que me está costando sacar. Tengo 2 tablas, Users y Groups_Users Tabla Users: id, nombre, apellidos etc. Tabla Groups_Users: idGrupo, idUsuario El caso es que necesito obtener los usuarios que  NO estén en ningún grupo o que estén en el grupo distinto al especificado. La consulta que estoy utilizando es la siguiente pero no me funciona: SELECT u.id, u.nombre  FROM [Users] u LEFT JOIN Groups_Users g ON u.id=g.idUsuario WHERE g.idUsuario IS NULL OR g.idGrupo<>1;  //Por ejemplo La primera parte es correcta porque me trae los que no están en ningún grupo, es decir hasta aquí bien: SELECT u.id, u.nombre  FROM [Users] u LEFT JOIN Groups_Users g ON u.id=g.idUsuario WHERE g.idUsuario IS NULL La segunda parte es en la que tengo problemas. PD: Estoy en SQL Server. Un saludo 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							1mpuls0
							
								       
								
								  Desconectado
								Mensajes: 1.186
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
Podrías colocar un ejemplo para poder ver que es lo que necesitas exactamente. Por lo que entiendo, esto debe funcionarte a menos que te yo este mal entendiendo el problema o no lo hayas explicado correctamente. SELECT  u.id, u.nombre, u.apellidos FROM    users u WHERE   NOT EXISTS         (         SELECT  NULL          FROM    groups_users g         WHERE   g.idusuario = u.id         )  UNION  SELECT u.id, u.nombre, u.apellidos  FROM users u, groups_users g WHERE u.id=g.idusuario AND g.idgrupo<>4   
 
 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Última modificación: 28 Enero 2014, 19:42 pm por Darhius »
								 | 
								
									 
									En línea
								 | 
							  
							 
							abc 
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							darknlee
							
								
								  Desconectado
								Mensajes: 5
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
Hola Darhius, antes de nada te agradezco mucho la respuesta, voy a poner un ejemplo porque igual no me he explicado correctamente.
  Tengo el siguiente registro en la tabla Users:
  id     Nombre     Apellidos ------------------------------   1   Perico    Palotes 2      Paco           Gómez 3      Roberto      García
  En la tabla Groups_Users ( 1 usuario puede pertecenecer a 0 o a muchos grupos)
  idGrupo   idUsuario ---------------------- 1                1 2                3 3                1
 
  Lo que quiero es realizar una consulta que me devuelva tanto los usuarios que no están en ningún grupo como los que no pertenecen a un grupo determinado, es decir que si lanzo la consulta de tal forma que me de los usuarios que no pertenecen al grupo 1 y a ningún grupo me de la siguiente salida:
  id     Nombre     Apellidos ------------------------------   2      Paco           Gómez 3      Roberto      García
  (omitiendo al usuario con id 1 porque uno de los grupos a los que pertenece es el grupo 1)
  Un saludo,
 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						| 
							Shell Root
							
						 | 
						
							
							 
							
No recuerdo mucho esto, pero espero no ser un tonto al decir que: quizás con un LEFT JOIN o RIGHT JOIN puedas obtener esos resultados. Es decir,  -dependiendo del canal de retorno-SELECT usu.Id, usu.Nombre, usu.Apellido FROM usuario usu LEFT JOIN grupo grp ON grp.idUsuario = usu.id  
 
 ó SELECT usu.Id, usu.Nombre, usu.Apellido FROM usuario usu RIGHT JOIN grupo grp ON grp.idUsuario = usu.id  
 
 Pruba a ver que canal es,  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							Te vendería mi talento por poder dormir tranquilo. 
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							1mpuls0
							
								       
								
								  Desconectado
								Mensajes: 1.186
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
El caso es que necesito obtener los usuarios que NO estén en ningún grupo o que estén en el grupo distinto al especificado. 
  e quiero es realizar una consulta que me devuelva tanto los usuarios que no están en ningún grupo como los que no pertenecen a un grupo determinado, es decir que si lanzo la consulta de tal forma que me de los usuarios que no pertenecen al grupo 1 y a ningún grupo me de la siguiente salida:
  Ten más cuidado con lo que escribes porque se puede mal interpretar, tal y como lo hice yo.. por eso pedía un ejemplo, bueno ahora que lo tengo veamos que se puede hacer. Edito: Segun yo, con esto debe quedar xD SELECT  u.id, u.nombre, u.apellidos FROM    users u WHERE   NOT EXISTS ( SELECT  NULL FROM    groups_users g WHERE   g.idusuario = u.id ) UNION SELECT u.id, u.nombre, u.apellidos  FROM groups_users g, users u WHERE g.idusuario=u.id AND g.idgrupo!=1 AND g.idusuario NOT IN( SELECT gu.idusuario FROM groups_users gu WHERE gu.idgrupo=1)   
 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Última modificación: 29 Enero 2014, 00:44 am por Darhius »
								 | 
								
									 
									En línea
								 | 
							  
							 
							abc 
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							HdM
							
								       
								
								  Desconectado
								Mensajes: 1.674
								
								 
								
								
								
								
								 
							 
						 | 
						
							
							 
							
Otra opción podría ser: SELECT id, nombre  FROM Users  WHERE (id NOT IN (SELECT DISTINCT idUsuario FROM Groups_Users))  OR (id NOT IN (SELECT idUsuario FROM Groups_Users WHERE idGrupo=1)) 
 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							 - Nice to see you again -   
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							darknlee
							
								
								  Desconectado
								Mensajes: 5
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
Ten más cuidado con lo que escribes porque se puede mal interpretar, tal y como lo hice yo.. por eso pedía un ejemplo, bueno ahora que lo tengo veamos que se puede hacer.
  Toda la razón, es que me pasé de sol a sol programando y ya no sé ni lo que puse. Muchísimas gracias a todos por vuestra ayuda, especialmente a ti Darhius ahora si que si.    
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	 |  
 
	 
	
 
			 
			
				
					
						| Mensajes similares | 
					 
					
						 | 
						Asunto | 
						Iniciado por | 
						Respuestas | 
						Vistas | 
						Último mensaje | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Problema con una consulta SQL
							 
							Bases de Datos
						 | 
						
							_CrisiS_
						 | 
						
							2
						 | 
						
							3,391
						 | 
						
							 
							
								18 Febrero 2010, 23:38 pm 
								por _CrisiS_
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Problema con una consulta
							 
							PHP
						 | 
						
							TheMaker
						 | 
						
							1
						 | 
						
							2,397
						 | 
						
							 
							
								20 Julio 2010, 15:49 pm 
								por MinusFour
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Problema con consulta SQL
							 
							Java
						 | 
						
							.:UND3R:.
						 | 
						
							0
						 | 
						
							1,683
						 | 
						
							 
							
								20 Octubre 2013, 03:44 am 
								por .:UND3R:.
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Problema con consulta IF
							 
							Programación C/C++
						 | 
						
							jaxoR
						 | 
						
							3
						 | 
						
							2,404
						 | 
						
							 
							
								 2 Diciembre 2013, 15:31 pm 
								por jaxoR
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							problema con consulta
							 
							Bases de Datos
						 | 
						
							m@o_614
						 | 
						
							3
						 | 
						
							3,155
						 | 
						
							 
							
								30 Mayo 2014, 17:06 pm 
								por elezekiel
							
						 | 
					 
				 
			    |