Задать вопрос
CodeInside
@CodeInside

Как сделать join два к ондному?

Есть таблица `users`, в которой есть поля `country` ("нынешняя" страна) и `home_country` (родная страна). И таблица `countries` с полями `country` (id страны) и `name` (название). Вот "нынешнюю" страну я вывожу так:
SELECT * FROM `users` INNER JOIN `countries` using(`country`) LIMIT 1

Вывод:
echo "Страна: ".$row['name'];
А как вывести и значение `home_country`?
PS: да, я дурак, и идентификаторы надо было назвать хотя б `id_country`, но уже поздно.
  • Вопрос задан
  • 157 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
SELECT /**/, current_country.name as current_country_name, home.name as home_country_name  FROM `users` 
INNER JOIN `countries` as current_country using(`country`)
INNER JOIN `countries` as home ON home.country = users.home_country
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@g3fox
Инженер
Что-то вроде такого:
select c.country from users as u inner join countries as c on u.home_country = u.country
Не силён в SQL.
И, да, с наименованием структур у вас всё равно какая-то хрень, даже в том варианте, который вы назвали в конце.
В таблице "users" следует вместо "country" поле именовать "country_id", а в таблице "countries" следовало бы иметь только два поля: "id", "name".
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы