#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, '%' )