transponer pasar multiples filas ejemplos ejemplo dinamico columnas sql mysql

sql - pasar - ¿Cómo seleccionar desde donde x es igual a múltiples valores?



sql transponer columnas a filas (3)

Entonces yo '', depurando algún código y existe la siguiente consulta SQL (simplificada de lo que realmente es).

SELECT ads.*, location.county FROM ads LEFT JOIN location ON location.county = ads.county_id WHERE ads.published = 1 AND ads.type = 13 AND ads.county_id = 2 OR ads.county_id = 5 OR ads.county_id = 7 OR ads.county_id = 9

Obtuve resultados muy extraños de la consulta y creo que es porque el primer O está anulando los AND que están antes. Así que estoy recuperando los resultados de los anuncios de todos los tipos y no solo del tipo 13. Cada vez que se invoca la consulta puede haber muchos condados que necesitan buscar o solo algunos.

Cualquier ayuda sobre la forma correcta de hacerlo sería apreciada.


Coloque paréntesis alrededor del "OR" s:

SELECT ads.*, location.county FROM ads LEFT JOIN location ON location.county = ads.county_id WHERE ads.published = 1 AND ads.type = 13 AND ( ads.county_id = 2 OR ads.county_id = 5 OR ads.county_id = 7 OR ads.county_id = 9 )

O mejor aún, use IN:

SELECT ads.*, location.county FROM ads LEFT JOIN location ON location.county = ads.county_id WHERE ads.published = 1 AND ads.type = 13 AND ads.county_id IN (2, 5, 7, 9)


Puede intentar usar paréntesis alrededor de las expresiones OR para asegurarse de que su consulta se interprete correctamente o, de manera más concisa, use IN:

SELECT ads.*, location.county FROM ads LEFT JOIN location ON location.county = ads.county_id WHERE ads.published = 1 AND ads.type = 13 AND ads.county_id IN (2,5,7,9)


Y aún más simple con IN:

SELECT ads.*, location.county FROM ads LEFT JOIN location ON location.county = ads.county_id WHERE ads.published = 1 AND ads.type = 13 AND ads.county_id IN (2,5,7,9)