Мне нужно объединить 3 таблицы в SQL Server.Эти 3 таблицы в основном имеют следующую схему:
Users Items UsersItems
+--------+ +--------+-------------+ +--------+--------+-------+
| UserID | | ItemID | Description | | UserID | ItemId | Value |
+--------+ +--------+-------------+ +--------+--------+-------+
| 1 | | 1 | desc1 | | 1 | 1 | 1 |
| 2 | | 2 | desc2 | | 1 | 2 | 2 |
| ... | | ... | desc3 | | 2 | 2 | 1 |
| n | | n | desc4 | | n | 1 | 1 |
+--------+ +--------+-------------+ +--------+--------+-------+
Как вы можете видеть, как пользователи, так и элементы могут расти бесконечно, а UsersItems используется для выражения отношений между этими двумя, включая столбец Value.
Мне нужен запрос для извлечения всех пользователей, а для каждого пользователя Мне нужны все элементы с соответствующим значением.
Если отношение не существует в UsersItems
, тогда Null(или значение по умолчанию) должно быть возвращено для столбца Value
этой строки.
Ожидаемый результат запроса должен быть:
ResultSet
+--------+--------+-------+
| UserID | ItemID | Value |
+--------+--------+-------+
| 1 | 1 | 1 |
| 1 | 2 | 2 |
| 1 | n | NULL |
| 2 | 1 | NULL |
| 2 | 2 | 1 |
| 2 | n | NULL |
| n | 1 | 1 |
| n | n | NULL |
+--------+--------+-------+