@AndreyBLG

Как выбрать данные в таблице в custom колонки представления?

Как выбрать данные в таблице в custom колонки представления?
Суть на скрине
6398997e441f4911863034.png
  • Вопрос задан
  • 46 просмотров
Решения вопроса 1
shabelski89
@shabelski89
engineer
схема
CREATE TABLE custom (
    meta_id INTEGER,
    post_id INTEGER,
    meta_key VARCHAR(32),
    meta_value VARCHAR(32)
);

INSERT INTO
    custom
VALUES
(6, 2, 'seo_descr', 'Описание стр 2');

INSERT INTO
    custom
VALUES
(7, 2, 'seo_title', 'Заголовок стр 2');

INSERT INTO
    custom
VALUES
(8, 1, 'seo_descr', 'Описание стр 1');

INSERT INTO
    custom
VALUES
(9, 1, 'seo_title', 'Заголовок стр 1');

запрос
SELECT
    DISTINCT t1.post_id AS id,
    t2.meta_value AS seo_title,
    t3.meta_value AS seo_descr
FROM
    custom t1
    LEFT JOIN custom t2 ON t1.post_id = t2.post_id
    AND t2.meta_key = 'seo_title'
    LEFT JOIN custom t3 ON t1.post_id = t3.post_id
    AND t3.meta_key = 'seo_descr'
ORDER BY
    t1.post_id;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@basili4-1982
Есть такой паттерн EAV называется https://habr.com/ru/post/343776/ .
Я думаю следует найти готовое решение для используемого фреймворка.
Ответ написан
Комментировать
Babakov-Danil
@Babakov-Danil
idk
Не уверен что лучшее решение, но работает
SELECT 
    t1.post_id AS id
    ,t1.meta_value AS seo_title
    ,t2.meta_value AS seo_descr
FROM 
    table t1
    LEFT JOIN table t2 on t1.post_id = t2.post_id AND t1.meta_id != t2.meta_id
GROUP BY 
    t1.post_id;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы