Where con más de una condición en SQL - Forum

Forum Navigation
You need to log in to create posts and topics.

Where con más de una condición en SQL

Hola gente:

Tengo una consulta SQL que filtra los registros cuya ID sea X

$sqlQuerys[0]="SELECT * FROM general WHERE id=?";

Mi pregunta es cómo hacer para que filtre más de un ID sin estar predeterminado la cantidad a filtrar. Por ejemplo, en alguna consulta pueden ser 3, en otras 4, y en otras 20.

He probado esto sin éxito:

WHERE ID IN (?);

pasando en ? el cojunto de ID divididos por coma (1,3,4,6)

No sé si me explico bien, pero me gustaría saber de qué manera logro el resultado sin predeterminar la consulta o sin hacer una consulta por cada ID.

 

Saludos!

@palamar yo hago algo parecido de esta manera:

$sqlQuerys[0]="SELECT * FROM general WHERE id=? OR id=? OR id=? OR id=? OR id=? OR id=? OR id=? OR id=?";

En mi ejemplo puedes seleccionar hasta 8 id diferentes. Si solo necesitas uno, el resto los pones en un valor que no devuelva resultados, como por ejemplo cero.
Saludos.

@palamar creo que el operador IN no te está funcionando porque envías los datos como una cadena de texto y los id son numéricos.
¿Has probado a enviar un Array?

Bueno, no he logrado que funcione aún, lo dejo por acá por si alguien tiene otra idea.

Algunas cosas que estuve viendo...si pongo

WHERE ID IN (12,18,22);

me devuelve perfectamente la consulta pero si pongo:

WHERE ID IN (?);

Y le paso los datos con un array o con un String "12,18,22" no funciona.

Quizás si paso los datos por separado si que funcione pero al no ser la cantidad tendría que poner al menos 100 signos de pregunta lo cual veo impráctico.

@palamar creo que tendría que revisar el plugin neoPhp para ver si encuentro una solución que permita hacer lo que necesitas.
Si consigo encontrar tiempo lo haré.

Palamar has reacted to this post.
Palamar

He probado pasar los números por separado y sí que funciona, o sea pongo:

 

WHERE ID IN (?,?,?);

Y le paso: 12::18::22 y funciona perfectamente, quiere decir que la consulta la hace correctamente pero, es lo que digo en el post anterior, lo veo impráctico cuando la consulta cambia constantemente. Le encontré una solución al menos por ahora pero requiere de restar la cantidad de ID a un total, poner la consulta con 30 '?' y rellenar con ceros los que no se usan y al menos funciona.

@luishp sería genial poder modificarlo, aunque parece puntual estoy seguro que va a funcionar para otras consultas también.

Desde ya gracias!