que actualmente tienen la siguiente fila en mi mesa:MySQL instrucción Select, cláusula WHERE 'IN'
course_data:
user_id days <-- This is a varchar column.
405 1,3,5
y yo estoy tratando de poner en práctica la siguiente instrucción SELECT:
SELECT usrID, usrFirst, usrLast, usrEmail
FROM tblUsers
WHERE usrID NOT IN
(
SELECT users.usrID
FROM
`course_data` courses,
`tblUsers` users
WHERE
days IN ('$day')
)
GROUP BY usrID
ORDER BY usrID
Básicamente, quiere que esa fila (con el usuario 405) se omita si la variable $ day incluye un '1, 3 o 5'.
Por ejemplo, si $day = "1"
, debe devolver una consulta vacía (porque el número "1" está en la columna "1,3,5").
Sin embargo, no he encontrado que este sea el caso. Aunque $day = "1"
, aún devuelve esa fila.
La única forma en que no devolverá la fila es si $day= "1,3,5."
Sin embargo, pensé que la cláusula IN() tomaría cualquier parte de mi variable y la aplicaría a esa columna.
¿Alguna idea de lo que estoy haciendo mal aquí? Gracias.
Gracias. Tienes razón sobre cambiar la estructura. Seguí adelante y lo hice. Gracias. – Dodinas
"así que esta es una mejor suposición": otra idea (con suerte factible) es utilizar una subconsulta NOT EXISTS como se describe en http://dev.mysql.com/doc/refman/5.1/en/exists-and-not- Existe-subqueries.html en lugar de 'x NOT IN (subconsulta)' – VolkerK
% como% daría 11 para una búsqueda de 1, por lo que realmente no se adapta, por lo que esta respuesta no se aplica realmente a la pregunta original. La respuesta de theomega parece más aplicable al OP. – Tarquin