У меня есть таблица test
, которая выглядит следующим образом:Список всех ассоциированных имен из указанной таблицы?
+-------+-------+
| u1_id | u2_id |
+-------+-------+
| 1 | 2 |
| 3 | 1 |
| 2 | 1 |
| 2 | 3 |
+-------+-------+
И, u1_id
и u2_id
являются «внешние ключи» к другой таблице user
:
+----+-------+
| id | name |
+----+-------+
| 1 | n_foo |
| 2 | n_bar |
| 3 | n_baz |
+----+-------+
Не знаю, как это объяснить, но :
- На входе у меня есть один пользователь
id
, на который можно ссылаться вu1_id
или вu2_id
. - Я хотел бы получить связанного с ним пользователя, как определено в таблице
test
, используя соединение по таблицеuser
.
Для пользователя id = 1
, я должен получить:
n_bar
n_baz
n_bar
Для пользователя id = 2
, я должен получить:
n_foo
n_foo
n_baz
Это может быть общей проблемой, но не нашел, как именно присоединяются к этим двум таблицам, используя:
u1_id
, если мой пользовательский вводid
вu2_id
колонкеu2_id
иначе
Я пытался что-то вроде этого, но это не похоже на работу:
SELECT name
FROM test
JOIN user
ON user.id = test.u1_id
WHERE test.u1_id = @guid OR
test.u2_id = @guid AND
CASE
WHEN test.u2_id = @guid
THEN test.u2_id = test.u1_id
END;
Любые идеи, как этого добиться? Или, может быть, есть лучший способ разработать эти таблицы, я полностью открыт для любых предложений.
См. СОЮЗ [ВСЕ]. И дайте нам знать, как вы поживаете. – Strawberry
Вы хотите дублировать результат? –