Обложки может и не быть (ни одна фотография в галерее не отмечена как обложка) — но что-то нужно вывести заместо нее. Тогда надо взять любую фоту из этой галереи — первую, последнюю не важно.
1) Ну да, у нас есть ID категории. Но данная категоря может быть и не опубликована, в этом случае результат должен быть нулевым.
1) по флагу is_published должен исключаться сам объект и все в него входящие объекты. То есть, если на категорию is_published = 0 то все альбомы и соответственно все их фотки должны исключаться (причем уже пофигу опубликованы они или нет).
— так что тут все понятно.
2) Я нигде не заметил в данном условии, что выбрать следующую и предидущую фотографию надо ОДНОВРЕМЕННО! — все верно, я этого и не говорил. Можно было как угодно. Что я сделал — я просто 2 запроса объединил в один, хотя это по сути 2 разных запроса. Если уже известны id фотограии нужно присоединять остальные таблицы за тем, что бы выполнялось уже приведенное условие.
3) Категории, альбомы и фотки. На один альбом одна фотка, по возможности главная, если нет — то любая другая. Итоговые вопросы я не понял вообще.
Да, согласен. Это просто для «полноты», на самом деле это не нужно. У меня изначально стояли LEFT JOIN (так было нужно) в последний момент я их исправил на JOIN так как LEFT тут нафиг сдался, а про условия как-то не подумал.
Это вопрос именно «религиозный» — кто как больше любит делать. :-) Но стоит понимать, что единого универсального способа решить задачу не существует при некоторых обстоятельствах будет лучше одно, при некоторых — уже совсем другое.
У меня желание «всю работу выполнять одним запросом» обусловлено тем, что один запрос проще оптимизировать. Проще подогнать индексы под 1 большой запрос, чем тоже самое сделать с 10-ю маленькими. Этим вобщем-то и вызвано. И еще я не согласен с тем, что всегда 10 маленьких будут выполнятся быстрее, чем один большой. Но доказать это не могу, впрочем как и вы не можете доказать обратное.
Дело в том, что раньше рабочие копии из действующего вебрута никто не делал, SVN был не так популярен, и даже те кто его использовали пользовались им исключительно для разработки, а на сервер выливали с помощью svn export уже 100% готовые и отлаженные версии.
Мода создавать из webroot рабочую копию пошла недавно, и честно говоря я решительно не понимаю в чем его смысл.
Запрос не учитывает возможную пустоту галереи, + в этом случае WHERE (is_main_foto = 1 OR is_published = 1) ничего не даст. Если не считать этого, то ваше — единственное предложенное верное решение 3-ей задачи.
Правда я на такие письма поступаю с точностью до наоборот — понижаю карму, а не повышаю ее. Что тогда и сделал.
28 сентября 2009 года хабр е***улся…
пить и куритьесть овощи и заниматься спортом.Но подобная статья на хабре вызывает улыбку, да.
Вот насчет капчи — добавли б список KCAPTCHA — www.captcha.ru/kcaptcha/. Все таки, чуть менее чем половина рунета ее использует.
1) по флагу is_published должен исключаться сам объект и все в него входящие объекты. То есть, если на категорию is_published = 0 то все альбомы и соответственно все их фотки должны исключаться (причем уже пофигу опубликованы они или нет).
— так что тут все понятно.
2) Я нигде не заметил в данном условии, что выбрать следующую и предидущую фотографию надо ОДНОВРЕМЕННО! — все верно, я этого и не говорил. Можно было как угодно. Что я сделал — я просто 2 запроса объединил в один, хотя это по сути 2 разных запроса. Если уже известны id фотограии нужно присоединять остальные таблицы за тем, что бы выполнялось уже приведенное условие.
3) Категории, альбомы и фотки. На один альбом одна фотка, по возможности главная, если нет — то любая другая. Итоговые вопросы я не понял вообще.
У меня желание «всю работу выполнять одним запросом» обусловлено тем, что один запрос проще оптимизировать. Проще подогнать индексы под 1 большой запрос, чем тоже самое сделать с 10-ю маленькими. Этим вобщем-то и вызвано. И еще я не согласен с тем, что всегда 10 маленьких будут выполнятся быстрее, чем один большой. Но доказать это не могу, впрочем как и вы не можете доказать обратное.
Мода создавать из webroot рабочую копию пошла недавно, и честно говоря я решительно не понимаю в чем его смысл.
Вопрос к авторам статьи кстати касательно рунета. Вы скан зоны .su делали?