Как ВНУТРЕННЕЕ СОЕДИНЕНИЕ одного столбца с двумя разными столбцами?

#mysql #inner-join

#mysql #внутреннее объединение

Вопрос:

У меня есть две таблицы:

 **projects**

|Equity_holders| Financer  |
|--------------|-----------|
|Company 1     | Company 7 |
|Company 2     | Company 9 |
|Company 3     | Company 4 |

**entities**

|name         | country |
|-------------|---------|
|Company 1    |  USA    |
|Company 2    |  Italy  |
|Company 3    |  UK     |
|Company 4    |  Nigeria|
|Company 5    |  Brazil |
|Company 6    |  China  |
|Company 7    |  France |
|Company 8    |  China  |
|Company 9    |  Germany|
  

Я хочу, чтобы моя отображаемая таблица выглядела как:

 |Equity_holders| country |Financer     | country |
|--------------|---------|-------------|---------|
|Company 1     |  USA    |Company 4    |  Nigeria|
|Company 2     |  Italy  |Company 7    |  France |
|Company 3     |  UK     |Company 9    |  Germany|                       
  

Я успешно использовал ВНУТРЕННЕЕ объединение, чтобы сопоставить столбец «Акционер» с именем объекта и отобразить соответствующую «страну»:

 SELECT projects.Equity_holders,entities.country, projects.Financer,entities.country
FROM projects
INNER JOIN entities ON projects.Equity_holders LIKE CONCAT('%', entities.name, '%')
INNER JOIN entities A ON projects.Financer LIKE CONCAT('%', entities.name, '%' )
  

Но не удается заставить столбец «Финансист» отображать правильную соответствующую страну. Это просто дублирует столбец ‘Equity_Holders’. У меня такое ощущение, что это проблема с запросом select, но я не могу понять, что изменить.

Ответ №1:

Вы можете попробовать ниже — вам нужно присвоить псевдоним вашим вторым объектам e1 и использовать e1.country как country1

 SELECT projects.Equity_holders,entities.country, projects.Financer,e1.country
FROM projects
INNER JOIN entities ON projects.Equity_holders=entities.name
INNER JOIN entities e1 ON projects.Financer=e1.name
  

Ответ №2:

вы должны получить A.country после проектов.Финансист, если вам нужна страна финансиста.

Попробуйте следующее:

 SELECT projects.Equity_holders,entities.country, projects.Financer,A.country
FROM projects
INNER JOIN entities ON projects.Equity_holders LIKE CONCAT('%', entities.name, '%')
INNER JOIN entities A ON projects.Financer LIKE CONCAT('%', entities.name, '%' )