2014-01-17 4 views
-2

Я хочу получить все «события» пользователя (данный user_id), используя его подписки. Я знаю, что это можно сделать с помощью подзапроса, но оно медленное. Пожалуйста, предложите лучший подход к его достижению.Что такое эффективный SQL-запрос?

Вот ссылка sqlfiddle: http://sqlfiddle.com/#!2/dd48e3

А вот дизайн изображение:

+2

1) Не надо e картинки для табличных структур (особенно. те, которые требуют микроскопа); используйте SQL Fiddle. 2) Вопросы должны проявлять минимальные усилия; покажите нам свои попытки. – Kermit

+0

И что такое запрос с помощью подзапроса? Не стесняйтесь. –

+0

@FreshPrinceOfSO: Спасибо! Отредактировал вопрос. Подзапрос не работает, поскольку внутренний запрос возвращает несколько результатов. – sasquatch

ответ

-1
select * from events e left join subscriptions s on s.r_id = e.r_id where s.user_id = ? 
0

Если и удалить, где положение вы получите событие, соответствующее каждый пользователь

select e.*,s.fname 
    from users s 
    join routine r ON (s.user_id = r.user_id) 
    join events e ON (e.r_id = r.r_id) 
where s.user_id = ? 
Смежные вопросы