Как отображать разные мета-ключи в одной строке в MYSQL?

Я пытаюсь отобразить все мета-ключи с одним и тем же идентификатором сообщения в одной строке.

От:

ID | Meta Key | Value
123| name     | Bitcoin
123| symbol   | BTC
123| date     | April 9, 2000
123| price    | 112
124| name     | Bitcoiin
124| symbol   | B2G
124| date     | April 9, 2001
124| price    | 11

К:

ID | Name     | Symbol | Date           | Price
123| Bitcoin  | BTC    | April 9, 2000  | 112
124| Bitcoiin | B2G    | April 9, 2001  | 11

Пытался:

SELECT P.ID,
    MAX(IF(PM.meta_key = 'name', PM.meta_value, NULL)) AS name,
    MAX(IF(PM.meta_key = 'symbol', PM.meta_value, NULL)) AS symbol,
    MAX(IF(PM.meta_key = 'date', PM.meta_value, NULL)) AS date,
    MAX(IF(PM.meta_key = 'price', PM.meta_value, NULL)) AS price
FROM crypto_posts AS P
LEFT JOIN crypto_postmeta AS PM on PM.post_id = P.ID
WHERE P.post_type = 'historical-info'
ORDER BY P.post_date DESC
LIMIT 10

Выводит только 1 элемент. Что мне не хватает?

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
0
93
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужна группа по

SELECT P.ID,
    MAX(IF(PM.meta_key = 'name', PM.meta_value, NULL)) AS name,
    MAX(IF(PM.meta_key = 'symbol', PM.meta_value, NULL)) AS symbol,
    MAX(IF(PM.meta_key = 'date', PM.meta_value, NULL)) AS date,
    MAX(IF(PM.meta_key = 'price', PM.meta_value, NULL)) AS price
FROM crypto_posts AS P
LEFT JOIN crypto_postmeta AS PM on PM.post_id = P.ID
WHERE P.post_type = 'historical-info'
group by P.ID  
ORDER BY P.post_date DESC
LIMIT 10

Другие вопросы по теме