mysql: объединить два столбца в два ряда - PullRequest
1 голос
/ 06 июня 2011

У меня есть следующий оператор

SELECT disease.id, disease.name, disease_synonym.name FROM disease JOIN disease_synonym where diseaseId=code

В результате получается таблица с идентификатором и два столбца с именами.Как я могу преобразовать это в 2 столбца только с идентификатором и именем?(конечно, идентификатор теперь будет появляться несколько раз)

Пока,

Нико

Ответы [ 2 ]

4 голосов
/ 06 июня 2011

На ум приходят два пути ...


Выполните запрос дважды (один раз для имени и один раз для синонима), затем объедините результаты вместе ...

SELECT disease.id, disease.name FROM disease

UNION ALL

SELECT disease.id, disease_synonym.name FROM disease JOIN disease_synonym where diseaseId=code


Или присоединиться к таблице из двух строк и использовать оператор CASE, чтобы сделать сводку ...

SELECT
  disease.id,
  CASE WHEN pivot.field = 'name' THEN disease.name
       WHEN pivot.field = 'syno' THEN disease_synonym.name
  END
FROM
  disease
INNER JOIN
  disease_synonym
    ON diseaseId=code
CROSS JOIN
  (SELECT 'name' AS field UNION ALL SELECT 'syno' AS field) AS Pivot
0 голосов
/ 06 июня 2011

Я думаю, что вы хотите SELECT disease.id, disease_synonym.name FROM ... не так ли?Просто отображаются имена синонимов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...