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

Problema con select ............

Estas en el tema de Problema con select ............ en el foro de Mysql en Foros del Web. 1 Select para dos tablas. ------------------------------------------------------------------------- Base de datos: Intranet Tabla: aplicaciones Id <clave> Aplicación <nombre de aplicación> Descripción <descripción de aplicación> Acceso <con acceso ...
  #1 (permalink)  
Antiguo 31/10/2006, 15:20
 
Fecha de Ingreso: octubre-2005
Mensajes: 405
Antigüedad: 18 años, 5 meses
Puntos: 1
Problema con select ............

1 Select para dos tablas.

-------------------------------------------------------------------------

Base de datos: Intranet

Tabla: aplicaciones
Id <clave>
Aplicación <nombre de aplicación>
Descripción <descripción de aplicación>
Acceso <con acceso (S) sin acceso (N)>

Tabla: accesos
ID <clave>
Usuario <nombre de usuario que tiene acceso>
Programa <nombre de aplicación>

Lo que requiero es:

Realizar pregunta:

mostrar todas las aplicaciones con acceso = “S” que no estén en accesos.

Donde los datos de:
aplicaciones son:
ID aplicacion descripcion acceso
--------------------------------------------
9 informatica xxxxxxxxxxxxxx S
10 rhumanos xxxxxxxxxxxxxx S
5 requerimiento xxxxxxxxxxxxxx S

accesos son:
ID usuario programa
---------------------------------------------
15 german informatica
16 german requerimiento

Y el select que obtuve gracias a la ayuda de uno de ustedes es:

SELECT aplicaciones.ID,aplicacion,descripcion,acceso FROM aplicaciones,accesos WHERE aplicaciobes.acceso="S" and aplicaciones.aplicacion <> accesos.programa

Pero obtengo es:

9 informatica xxxxxxxxxxxxxxxxx S
10 rhumanos xxxxxxxxxxxxxxxxx S
10 rhumanos xxxxxxxxxxxxxxxxx S
5 requerimiento xxxxxxxxxxxxxxxxx S

y obviamente lo que deberia obtener es:
10 rhumanos xxxxxxxxxxxxxxxxx S

Que tiene de malo esta consulta... Alguien me puede ayudar.
  #2 (permalink)  
Antiguo 31/10/2006, 16:34
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 17 años, 11 meses
Puntos: 3
Hola, la consulta te da como resultados los valores de la tabla aplicaciones que sean diferentes de la tabla accesos, pero esa consulta lo que hace es, un registro de la tabla aplicaciones lo compara con todos los registros de la tabla accesos, es por eso que te sale ese resultado.
Prueba con esto:

Código:
 select ap1.* from aplicaciones ap1 left join accesos ac1 on
 ap1.aplicacion=ac1.programa
 where ac1.programa is null and ap1.acceso='S';
Esta consulta si tu versión no soporta sub-consultas por la versión.
Si puedes hacer sub-consultas, puedes usar NOT IN

Código:
SELECT ap1.ID,aplicacion,descripcion,acceso FROM aplicaciones ap1,accesos ac1 WHERE ap1.acceso="S" and ap1.aplicacion NOT IN 
(SELECT programa FROM accesos);
Espero te sirva
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
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 05:28.