Tengo una consulta de mysql bastante complicada para mí, en la que estoy totalmente estancado y no encuentro ninguna respuesta en línea.consulta sql con múltiples instrucciones where
Aquí es mi consulta:
SELECT
items.*
FROM
items
INNER JOIN
items_meta_data
WHERE
(
(meta_key = 'lat' AND meta_value >= '55')
OR
(meta_key = 'lat' AND meta_value <= '65')
)
AND
(
(meta_key = 'long' AND meta_value >= '20')
OR
(meta_key = 'long' AND meta_value <= '30')
)
GROUP BY
item_id
Por supuesto, he probado la consulta con sólo 1 declaración y que funciona bien. Entonces, si solo paso la parte larga o lat entonces obtengo resultados. Solo cuando trato de unirlos obtengo resultados diferentes.
Gracias por la ayuda con anticipación!
La estructura de la tabla es la siguiente:
artículos de mesa: ID item_name Item_description
meta Tabla: meta_id item_id meta_key meta_value
Solución
A quien le interese finalmente logré enfrentar este problema. Gracias a todos por su ayuda y por dentro.
SELECT
SQL_CALC_FOUND_ROWS items.*
FROM
items
INNER JOIN
items_meta ON (items.ID = items_meta.post_id)
INNER JOIN
items_meta AS m1 ON (items.ID = m1.post_id)
WHERE
1=1
AND
items.post_type = 'post'
AND
(items.post_status = 'publish')
AND
((items_meta.meta_key = 'lat' AND CAST(items_meta.meta_value AS SIGNED) BETWEEN '55' AND '65')
AND
(m1.meta_key = 'long' AND CAST(m1.meta_value AS SIGNED) BETWEEN '20' AND '30'))
GROUP BY
items.ID
ORDER BY
items.date
DESC
¿Puede aclarar específicamente qué sucede cuando "los une"? ¿Cómo son los datos que está consultando y qué resultados obtiene? – David
Podemos suponer que esto no es un error en mysql, por lo que debe decir lo que esperaba y lo que en su lugar observó. ¿Qué datos está poniendo a través de la consulta? – tenfour
Está buscando una fila de la base de datos donde 'meta_key' es tanto' 'lat'' como' 'long''. No estoy seguro de que sea posible ... – lonesomeday