sql-запрос с несколькими операторами where

У меня довольно сложный для меня запрос mysql, на котором я полностью застрял и не могу найти ответа в сети.

Вот мой запрос:

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

Конечно, я тестировал запрос только с одним оператором, и он отлично работает. Так что если я пропущу только длинную или широчайшую часть, я получу результат. Только когда я пытаюсь их соединить, получаю разные результаты.

Заранее спасибо за помощь!

Таблица имеет следующую структуру:

Элементы таблицы: Я БЫ имя элемента item_description

Мета таблицы: meta_id item_id meta_key meta_value

Решение

Всем, кому интересно, мне, наконец, удалось решить эту проблему. Всем спасибо за помощь и внутренности.

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
44
задан user1117774 27 December 2011 в 19:06
поделиться