Не уверен, почему вы отметили это как mysql
и sql-server
- вы используете оба?
В любом случае, это стандартное сопоставление «многие ко многим»:
Таблица: Пользователь
- UserID (int, PK)
- UserName (varchar (50), не нуль)
Таблица: Город
- CityID (int, PK)
- CityName (varchar (50), не ноль)
Таблица: UserCity
- AssociationID (int, PK)
- UserID (int, FK User, not null)
- CityID (int, FK City, не null)
Чтобы получить все города для данного пользователя:
SELECT c.CityID, c.CityName
FROM User u
INNER JOIN UserCity uc
ON uc.UserID = u.UserID
INNER JOIN City c
ON c.CityID = uc.CityID
WHERE u.UserID = @UserID