У меня есть некоторые данные в следующем формате:
Страны:
lang | code | name
==========================
EN 1001 Italy
IT 1001 Italia
RO 1001 Italia
AL 1001 Itali
TR 1001 Italya
--------------------------
EN 1002 Greece
RO 1002 Grecia
AL 1002 Greqi
TR 1002 Yunanistan
--------------------------
EN 1003 Romania
AL 1003 Rumani
TR 1003 Romanya
--------------------------
Я хочу выбрать все имена, но с еще одним столбцом, в котором я перечисляю имя этогострана (имеющая тот же код) на определенном языке (скажем EN).
Я хочу напечатать эту таблицу:
lang | code | name | name_EN
===================================
EN 1001 Italy Italy
IT 1001 Italia Italy
RO 1001 Italia Italy
AL 1001 Itali Italy
TR 1001 Italya Italy
-----------------------------------
EN 1002 Greece Greece
RO 1002 Grecia Greece
AL 1002 Greqi Greece
TR 1002 Yunanistan Greece
-----------------------------------
EN 1003 Romania Romania
AL 1003 Rumani Romania
TR 1003 Romanya Romania
-----------------------------------
Я пытался использовать самостоятельное соединение, но не смог.
SELECT t1.lang AS lang
, t1.code AS code
, t1.name AS name
, t2.name AS name_EN
FROM countries t1
INNER JOIN countries t2
ON t2.name = t1.name
AND t2.lang = 'EN'
Из этого запроса я получаю только имя в lang EN;1 имя на страну.
lang | code | name | name_EN
===================================
EN 1001 Italy Italy
EN 1002 Greece Greece
EN 1003 Romania Romania
Если я уберу условие t2.lang = 'EN'
, новый столбец будет идентичен существующему столбцу имени.
Могу ли я получить этовид таблицы с использованием самостоятельного соединения?Если да, то как?
Если это невозможно сделать с помощью самостоятельного соединения, стоит ли (с точки зрения производительности) пытаться сделать это в MySql, или мне лучше делать это программно?
Вы можете проверить это здесь.https://paiza.io/projects/e/oahtrlObx_ctyHBZFnzDvA