Можно ли сделать строки объединенной таблицы именами полей и значениями основного запроса?Позвольте мне объяснить, что, показывая структуру и данные:
structs
id
type
struct_fields
id
struct_id
name
value
Пример данных:
structs
1, faq
2, faq
3, post
struct_fields
1, 1, "question", "Will there be food?"
2, 1, "answer", "No, you will have to bring your own food"
3, 1, "active", 1
4, 2, "question", "Will there be drinks?"
5, 2, "answer", "Yes, there will be plenty of drinks"
6, 2, "active", 0
7, 3, "title", "Great post!"
8, 3, "body", "Lorum ipsum..."
9, 3, "published", "2019-01-01 23:12:00"
Это даст мне все структуры типа faq со всеми соответствующими полями
SELECT s.*, f.*
FROM `structs` s
RIGHT JOIN `struct_fields` f ON f.struct_id = s.id
WHERE s.type = 'faq'
Но в моих строках, очевидно, есть двойники, потому что все struct_fields также генерируют строки
Но когда я добавляю
GROUP BY s.id
, только первая строка совпадающих полей struct_fieldsпоказано (phpmyadmin) и с именами полей struct_fields.
Я бы хотел иметь возможность выбрать все структуры со всеми соответствующими struct_fields, где имя struct_fields будет именем поля в результате изначение struct_field, чтобы я мог использовать HAVING, чтобы сделать выбор.Итак:
Результат:
id, type, question, answer, active
1, faq, "Will there be food?", "No, you...", 1
2, faq, "Will there be drinks?", "Yes, there...", 0
Так что теперь я смогу расширить запрос такими вещами, как:
в случае часто задаваемых вопросов, например: HAVING active = 1 (or WHERE active = 1)
в случае сообщения, например: WHERE published > DATE_SUB(NOW(), INTERVAL 1 DAY)