Нужна помощь с SQL
Есть таблица (wp_postmeta), структура такая:
id post_id key value
1 11 fromcity_1 Москва
2 11 fromdistrict_1 Садовое кольцо
3 11 fromcity_2 Воронеж
4 11 fromdistrict_1 Коминтерновский
5 13 fromcity_2 Воронеж
6 13 fromdistrict_1 Северный
И есть вот такой запрос:
SELECT `post_id`
FROM `wp_postmeta` AS p
WHERE p.`key` LIKE 'fromcity_%' AND p.`value` = 'Москва'
AND EXISTS (
SELECT 1
FROM wp_postmeta AS c
WHERE c.post_id = p.post_id
AND c.`key` = concat('fromdistrict_', substring(p.`key`, 9))
AND c.`value` = 'Садовое кольцо'
)
По идее, он должен возвращать post_id
, где fromcity_1 = Вороклини
, а fromdistrict_1 = Центр
, но не работает.
При этом у ключей цифра 1 - ID
, и у ключей fromcity_
и fromdistrict_
ID
должен совпадать, что я и делаю вот здесь:
AND c.`key` = concat('fromdistrict_', substring(p.`key`, 9))
Но, видимо, я как-то неправильно использую substring, так как не работает...