Specifi c SQL запрос (несколько meta_value / та же строка) - PullRequest
1 голос
/ 08 апреля 2020

Я не могу сделать правильный SQL запрос. Мне нужно запросить мою базу данных Wordpress, выбрав несколько meta_value из спецификаций meta_key и получить результаты в одной строке.

Таблица:

table

I просто хочу иметь meta_value из meta_key = '1', 'gvmaps_lat_2' и 'gvmaps_long_2' в одной строке, но я не могу найти как.

Если я сделаю этот запрос, результаты будут хорошими, но не в той же строке:

SELECT e.id, e.date_created, m.meta_value
FROM tp_gf_entry AS e, tp_gf_entry_meta AS m
WHERE e.id = m.entry_id
AND m.meta_key IN ('1', 'gvmaps_lat_2', 'gvmaps_long_2')

Если я сделаю это, у меня будет ошибка:

SELECT e.id, e.date_created, (SELECT meta_value FROM tp_gf_entry_meta WHERE meta_key = '1')
FROM tp_gf_entry AS e, tp_gf_entry_meta AS m
WHERE e.id = m.entry_id
AND m.meta_key IN ('1', 'gvmaps_lat_2', 'gvmaps_long_2')

1242 - подзапрос возвращает более 1 строки

1 Ответ

1 голос
/ 08 апреля 2020

Я не могу выполнить ваш запрос, так как у меня нет всех ваших полей ... но то, что вы ищете, это JOIN, так что все ваши результаты будут в одной строке. Не проверено, но должно работать.

SELECT DISTINCT
    e.id,
    e.date_created,
    m.meta_value as title,
    m2.meta_value as lat,
    m3.meta_value as lon
FROM
    tp_gf_entry e
LEFT JOIN tp_gf_entry_meta  m ON e.ID = m.entry_id AND m.meta_key = '1'
LEFT JOIN tp_gf_entry_meta m2 ON e.ID = m2.entry_id AND m2.meta_key LIKE 'gvmaps_lat_2' 
LEFT JOIN tp_gf_entry_meta m3 ON e.ID = m3.entry_id AND m3.meta_key LIKE 'gvmaps_long_2' 
WHERE
    e.id = m.entry_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...