2015-04-22 2 views
0

Как получить список друзей списка друзей из таблицы сети.self join to fetch friend list

Ниже URL содержит таблицы схемы и примеры data.I создали следующий запрос, который id- http://sqlfiddle.com/#!9/646bf/5

SELECT 
    DISTINCT m.* 
FROM members AS m 
    LEFT JOIN network n1 
    ON (n1.mem_id = m.mem_id 
     AND n1.isfriend = 'Y') 
    LEFT JOIN network n2 
    ON (n2.frd_id = m.mem_id 
     AND n2.isfriend = 'Y') 
WHERE n2.mem_id = '2' 
    AND m.profile_type='BB' ORDER BY m.profilenam ASC 

Этот запрос также медленно и дает повторяющийся результат.

Пожалуйста, помогите

+0

Вам нужно объяснить вашу систему и вашу проблему немного лучше. Попробуйте включить вывод, который вы хотели бы получить из данных, которые у вас есть. –

+0

Можете ли вы сообщить мне, почему «сеть» стол? –

+0

@SameerK, потому что вы можете видеть схему сетевой таблицы, где 2 записи похожи на это AB и BA, включая isfriend = 'Y' – mark

ответ

0

Вашего стола члена не имеет ключа, что нам полезны для этого запроса (и индекса profile_type И profilenam, вероятно, помогут). Аналогично, таблица сети не имеет индексов, и добавление одного из mem_id поможет.

Однако не удается прокомментировать проблему с дублирующимися результатами, поскольку я не знаю, что ваш запрос пытается сделать!

+0

Я добавил все необходимые индексные ключи для всех необходимых столбцов – mark