Как использовать левое соединение, если левая таблица имеет несколько полей, связанных с другой таблицей?

0

У меня есть две таблицы: пользователь и город. Поля таблицы пользователя:

user_id, user_birth_city, user_current_city, user_school_city

Поля таблицы пользователя:

city_id, city_name

Как показать пользователю все три города?

  • 0
    Вам нужно сделать 3 соединения и переименовать город таблицы в каждом соединении, используя что-то вроде «SELECT user. *, Alias1.column как columnAlias1, alias2.column как columnAlias2 .. От пользователя ... Left JOIN tableName alias1 ON .. LEFT JOIN tableName alias2 On ... »
Теги:
left-join

2 ответа

0
Лучший ответ

Используйте LEFT JOIN в таблице city в 3 раза, можете это сделать

SELECT u.user_id,c1.city_name,c2.city_name,c3.city_name 
  FROM user u
  LEFT JOIN city c1 ON u.user_birth_city=c1.city_id
  LEFT JOIN city c2 ON u.user_current_city=c2.city_id
  LEFT JOIN city c3 ON u.user_school_city=c3.city_id

ПРИМЕЧАНИЯ: user является зарезервированной таблицей в MySQL, имя таблицы не должно быть

0
Select b.city_id, b.city_name from user_table a, city_table b where 
(a.user_birth_city=b.city_name OR a.user_current_city=b.city_name OR 
a.user_school_city=b.city_name) AND user_id='(whatever your user_id is)';

Пользователи SQL будут комментировать, что этот запрос не будет работать из-за запятой в поле, но я заверяю вас, что так будет.

  • 1
    Ваш sql имеет синтаксическую ошибку, он имеет два where

Ещё вопросы

Сообщество Overcoder
Наверх
Меню