Пользовательский SQL-запрос - PullRequest
1 голос
/ 04 февраля 2012

Скажите, что у меня есть изображение:

enter image description here

Это означает, что у 1 есть друзья 2,3,4, а у 6 также есть друг 1.

Как я могу получить эти идентификаторы 2,3,4 и 6, которые дружат с 1, используя SQL

Ответы [ 3 ]

3 голосов
/ 04 февраля 2012

, которое немного зависит от того, какую БД вы используете - следующее будет работать в MySQL и Oracle и, возможно, на сервере MS SQL (не уверен):

SELECT 
(CASE WHEN ID1 = 1 THEN ID2 ELSE ID1 END) AS THEFRIENDS 
FROM YOURTABLE WHERE 
ID2 = 1 OR 
ID1 = 1

Это работает везде, но, возможно, меньшеисполнитель:

SELECT ID1 FROM YOURTABLE WHERE ID2 = 1
UNION
SELECT ID2 FROM YOURTABLE WHERE ID1 = 1
2 голосов
/ 04 февраля 2012
select id2 as FriendID from table
where id1 = 1
union
select id1 as FriendID from table
where id2 = 1
0 голосов
/ 04 февраля 2012

Используйте более описательные имена для начинающих

SELECT * FROM table WHERE id1=1 or id2=1 and id1<>id2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...