Объединить в одну строку mysql

204
20 февраля 2018, 04:25

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

Answer 1

Конкретно для представленной задачи, если мы знаем, что FieldID = 12 - это dolzhnost, а 13 - Company:

SELECT
  t1.id, t1.name, 
  (SELECT t2.value FROM table2 t2 WHERE t2.FieldID=12 AND t2.id = t1.id) AS 
  dolzhnost, 
  (SELECT t3.value FROM table2 t3 WHERE t3.FieldID=13 AND t3.id = t1.id) AS 
  Company 
FROM table1 t1 WHERE t1.id = 1;

Для других id запрос работать не будет. У вас в table2 должен быть однозначный идентификатор типа значения dolzhnost, Company и других, если они есть.

Хотя если у вас в table2 только два значения, один должность, второе - компания, при этом известно, что FieldID компании всегда больше FieldID должности, можно использовать вот такой запрос для любых id:

SELECT
  t1.id, t1.name, 
  (SELECT t2.value FROM table2 t2 WHERE t2.id = t1.id ORDER BY t2.FieldID ASC LIMIT 1) AS 
  dolzhnost, 
  (SELECT t3.value FROM table2 t3 WHERE t3.id = t1.id ORDER BY t3.FieldID DESC LIMIT 1) AS 
  Company 
FROM table1 t1 WHERE t1.id = 1;

Но всё равно структура БД весьма странна и может приводить к неоднозначностям.

READ ALSO
ASP.NET Core 2.0 Identity Framework + MySQL. Как использовать?

ASP.NET Core 2.0 Identity Framework + MySQL. Как использовать?

Подскажите, есть ли какие простые манипуляции по переводу скаффолдингового приложения (Web application) с индивидуальной авторизацией на MySQL базу...

243
SQL триггеры. Таблицы inserted не существует

SQL триггеры. Таблицы inserted не существует

Здравствуйте, уважаемые специалисты, пишу свой самый первый sql триггер, возникли трудности, прошу помощиДействия триггера такие: при добавлении...

246
Решение функции по заданному условию

Решение функции по заданному условию

Здравствуйте! Необходима помощь с правильной записью условия в цикле в методе GetResПрикрепил скриншот функции и текущий код ниже

238