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

Consulta de SQL

Estas en el tema de Consulta de SQL en el foro de Bases de Datos General en Foros del Web. Hola, Estoy tratando de hacer una consulta de SQL, pero la verdad es que ando un poco perdido. Tengo una tabla ("TABLA") con los campos ...
  #1 (permalink)  
Antiguo 02/09/2002, 03:46
 
Fecha de Ingreso: agosto-2002
Mensajes: 19
Antigüedad: 21 años, 9 meses
Puntos: 0
Consulta de SQL

Hola,
Estoy tratando de hacer una consulta de SQL, pero la verdad es que ando un poco perdido. Tengo una tabla ("TABLA") con los campos "usuario" y "aplicacion". Así, por ejemplo el contenido de esta tabla podría ser:

|usuario.. |aplicacion |
|IVAN.....|OFFICE...........|
|IVAN.....|CORELDRAW..|
|IVAN.....|LOTUS............|
|PEPE...|OFFICE...........|
|PEPE...|AUTOCAD........|


Lo que querría es que me diese el nombre de todos los usuarios que saben manejar varias aplicaciones. Es decir, por ejmplo, hacer esta consulta:
- selecciona de la tabla usuarios todos aquellos usuarios que sepan manejar el "office" y el "coreldraw".

Se me ocurre algo así como
SELECT usuario FROM tabla WHERE aplicacion='office' AND aplicacion='coreldraw'.

¿No hay ninguna forma más breve y mejor para hacerlo? El problema con lo anterior es que las aplicaciones (tanto el nombre omo el número) variarán de una consulta a otra, y me gustaría saber si hay alguna forma más abreviada.
Había pensado en algo como
SELECT usuario FROM tabla WHERE aplicacion IN ('coreldraw','office')
pero es justo lo contrario lo que quiero conseguir (con esto me seleccionaría cualquier usuario que sepa manejar coreldraw o office.

Gracias
  #2 (permalink)  
Antiguo 02/09/2002, 03:57
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 4 meses
Puntos: 17
Re: Consulta de SQL

SELECT usuario,aplicacion,count(usuario) FROM tabla GROUP BY usuario HAVING count(usuario) > 1

Esto en MySQL funciona, en otras bases de datos no te dejará seleccionar aplicacion :(

<font size=2>Proximamente...
<a href="http://www.traduim.com">Traduim</a>: El portal de los traductores[/CODE]
  #3 (permalink)  
Antiguo 02/09/2002, 04:24
 
Fecha de Ingreso: agosto-2002
Mensajes: 19
Antigüedad: 21 años, 9 meses
Puntos: 0
Re: Consulta de SQL

A la vsiat de lo que me has respondido me parece que no me he expresado bien. Lo que quiero hacer es seleccionar de la tabla squellos usuarios que sepan manejar ciertas aplicaciones concretas, por ejemplo Office y CorelDraw. Con lo que tú me has indicado si no me equivoco me seleccionaría todos los usuarios que sepan manejar más de una aplicación.

Gracias.
  #4 (permalink)  
Antiguo 02/09/2002, 04:43
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 4 meses
Puntos: 17
Re: Consulta de SQL

Cierto.
Entonces prueba esto:
SELECT a.usuario,a.aplicacion,b.aplicacion FROM tabla a, tabla b WHERE a.usuario = b.usuario AND a.aplicacion &lt;&gt; b.aplicacion AND (a.aplicacion = &quot;CorelDraw&quot; or b.aplicacion = &quot;CorelDraw&quot;) AND (a.aplicacion = &quot;Office&quot; or b.aplicacion = &quot;Office&quot;)

<font size=2>Proximamente...
<a href="http://www.traduim.com">Traduim</a>: El portal de los traductores[/CODE]
  #5 (permalink)  
Antiguo 02/09/2002, 05:00
 
Fecha de Ingreso: agosto-2002
Mensajes: 19
Antigüedad: 21 años, 9 meses
Puntos: 0
Re: Consulta de SQL

Sí, esto funcionaría. El problema es que es demasiado complejo para tan solo 2 aplicaciones. En mi caso, podría llegar a tener hasta 20 aplicaciones, por lo que siguiendo esa estructura sería ...

En principio lo iba a hacer con un &quot;for&quot; y una tabla auxiliar:
1- creao tabla auxiliar con todos los usuarios.
2- borro de la tabla aquellos usuarios que no sepan manejar cierta aplicacion.
3- Repito el paso 2 tantas veces como aplicaciones existan.

El problema que veía a este método es que tengo que estar modificando continuamente la tabla auxiliar, y esto supongo que es terriblemente lento (teniendo en cuenta que podría haber muchos usuarios y varias aplicaciones). Al menos lo era con el Access. Ahora estoy con MySQL, pero supongo que aunque mejor, tampoco será la panacea, y el método seguirá siendo bastante ineficaz.
¿Se te ocurre algo?

Gracias
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 16:32.