• Viernes 19 de Abril de 2024, 17:51

Autor Tema:  Clausula In No Me Funciona ¿?  (Leído 1881 veces)

MindEye

  • Miembro MUY activo
  • ***
  • Mensajes: 185
    • Ver Perfil
Clausula In No Me Funciona ¿?
« en: Lunes 18 de Octubre de 2004, 20:48 »
0
- Vereis compañeros, lo que hago yo es lo siguiente:

 - El tema es que tengo 10 tablas, en las que guardo las identidades de los usuarios que visitan los registros de cada tablas.

 - Bien, el caso es que, cuando un usuario visita x registro, este se marca en un campo llamado usuarios de tipo varchar(50), con el id, y lo que hace es que recogo el valor actual que tiene el campo, y le aumento ', y el codigo del usuario'. bien, el problema es que cuando hago la sentencia de sql para ver solo los registros que el usuario no haya visitado, hago lo siguiente

 rs.recordsource = "Select * from Tabla where [Id Usuario] not in usuarios"
 rs.refres

se supone que esto me devuelve los registros donde el codigo del usuario no aparesca por el campo usuarios.

 - Bien, pues no me sale.

 - Por favos, si alguien me puede echar un cabo.

 - PD : Realmente lo hago con el mysql, pero pienso que la sentencia es la misma, y por eso la represento en access.

 - Gracias

DiabloRojo

  • Miembro MUY activo
  • ***
  • Mensajes: 220
    • Ver Perfil
Re: Clausula In No Me Funciona ¿?
« Respuesta #1 en: Lunes 18 de Octubre de 2004, 21:21 »
0
Qué tal MindEye?

Creo que puedes hacerlo de dos formas:

1.- SELECT * FROM tabla WHERE [Id Usuario] <> Valor

2.- SELECT * FROM tabla WHERE [Id Usuario] NOT IN (Valor)

Donde Valor es el valor que quieres que tu búsqueda omita. Prueba y dime si alguna de las dos formas te funcionó.

NOTA: La cláusula IN arroja como resultado un número n de registros cuyo criterio de búsqueda es un CONJUNTO de valores proporcionados por ti. Por ejemplo:

SELECT * FROM tabla1 WHERE pais IN ('EEUU','MEXICO','CANADA')

Devuelve aquellos registros cuyo campo país sean EEUU, MEXICO o CANADA.


DiabloRojo

MindEye

  • Miembro MUY activo
  • ***
  • Mensajes: 185
    • Ver Perfil
Re: Clausula In No Me Funciona ¿?
« Respuesta #2 en: Lunes 18 de Octubre de 2004, 23:33 »
0
- El tema esta en que el campo usuarios, es el que proporciona los datos de los id de los usuarios en este caso, osea, 1,2,5,6.

- Bien, pues lo que yo pretendo hacer es lo siguiente. Con la consulta paso el id del usuario activo, y necesito saber si su codigo reside o no en el campo usuarios, para saber si este registro ya ha sido visitado por el usuario activo en el momento.

-  Me entiendes a lo que me refiero.

- He mirado a ver si el MySQL tiene alguna clusula, que separa por un delimitador, pero me parece que no la tiene..

- Este es mi problema.

 - Me entiendes a lo que me refiero.

DiabloRojo

  • Miembro MUY activo
  • ***
  • Mensajes: 220
    • Ver Perfil
Re: Clausula In No Me Funciona ¿?
« Respuesta #3 en: Martes 19 de Octubre de 2004, 13:27 »
0
Ok. Pensé que usuarios era otra tabla. Si puedes mandar la estructura de las tablas involucradas tal vez sea más fácil detectar el error o ver alguna forma de resolver tu problema.
La verdad no entiendo muy bien... ¿Dices que en el mismo campo guardas todos los datos de las personas que han visitado ese registro?. Si es así puedes tener un error de Normalización... Recuerda que los datos contenidos en cada campo deben ser atómicos (algo así como partículas individuales e independientes).
Pero lo que te dije antes, manda las estructuras de la/las tabla(s) involucrada(s) para poder ver mejor lo que está pasando.


DiabloRojo

DiabloRojo

  • Miembro MUY activo
  • ***
  • Mensajes: 220
    • Ver Perfil
Re: Clausula In No Me Funciona ¿?
« Respuesta #4 en: Miércoles 20 de Octubre de 2004, 18:26 »
0
Hola MindEye.
Estuve releyendo con más detenimiento tu planteamiento. Te recomiendo que quites ese campo (usuarios) de la tabla y que crees otra tabla con los campos siguientes:

IdRegistro, IdUsuario, FechaAcceso y HoraAcceso.

(yo llamo a esta tabla SegAcces)

Estoy suponiendo que tienes una tabla donde almacenas los datos de los usuarios y que cuenta con un campo IdUsuario, así mismo, que en la tabla que mencionas posees un campo que identifique a cada registro y que se llame IdRegistro. Explico:

-IdRegistro sería el identificador del registro al cual ha accedido un usuario -que se encuentra en tu tabla Tabla-.
-IdUsuario pues el identificador del usuario -que estaría en una hipotética tabla Usuarios-.
-FechaAcceso sería la fecha en la cual se realizó el acceso al registro -que pertenece a la tabla que te aconsejo crees-.
-HoraAcceso la hora en la cual se realizó el registro -que pertenece a la tabla que te aconsejo crees-.

Por supuesto tu podrás añadir más campos en esta tabla según los necesites.

Imagino que en algún lugar de tu aplicación posees alguna forma para seleccionar a un usuario de ahí tomarás el valor "Valor" de IdUsuario y puedes hacer una consulta como la que sigue:

SELECT * FROM Tabla WHERE IdRegistro IN (SELECT IdRegistro FROM SegAcces where IdUsuario<>Valor)

otra forma sería:

SELECT * FROM Tabla WHERE IdRegistro NOT IN (SELECT IdRegistro FROM SegAcces where IdUsuario=Valor)


Si te das cuenta esta nueva tabla es un enlace entre los usuarios y los registros.

Espero haber sido suficientemente claro y haber ayudado en algo.


DiabloRojo