- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Переиграть и победить: как анализировать конкурентов для продвижения сайта
С помощью Ahrefs
Александр Шестаков
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть такой запрос к базе mysql
mysql_query("select*from (select*from textos where (user1 = '$user1' and user2 = '$user2') or (user1 = '$user2' and user2 = '$user1') order by datetime desc limit 10) t order by datetime asc"
Что происходит? Выбираем 10 самых свежих коментов, для этого сортируем по дате вниз. Но после этого нужно чтобы эти комменты шли снизу вверх, то есть чтобы в броузере самый свежий комент был внизу страницы. Так надо. Теперь обратите внимание на букву "t" перед order by. Млин, что она означает?????? Упоминается только в этой инструкции и больше никак и нигде не используется. Без нее не работает, выдает mysql error. А с ней все как че
Мне в целом по барабану, главное что работает. Но вот просто захотелось узнать, чес я думаю это какие-то сокращения по умолчанию, но никогда с таким раньше не сталкивался
это имя для временной таблицы, получающейся в результате вложенного селекта
---------- Добавлено 07.03.2012 в 16:56 ----------
но сам по себе запрос какой то корявый
а другие бывают? Где про них прочитать можно, или хотя бы как это правильно называется?
кто другие? запросы? конечно бывают )
t - это алиас. внутренний запрос выступает как таблица, из которой выбираются данные, по правилам языка ее надо назвать
Если я правильно понимаю нежно писать (SELECT ... ) AS t
p.s MySQL много отступлений от правил языка, поэтому работает и так
Возможно другой запрос еще обращается к этому аласу t. Могли бы и сообщение ошибки прислать. А вообще да, не помешает
нежно писать
Возможно другой запрос еще обращается к этому аласу t.
t доступна только в пределах этого запроса
---------- Добавлено 07.03.2012 в 22:01 ----------
а зачем там вообще подзапрос????
"order by datetime asc" вполне в пхп делается, записи-то уже отсортированы. всего делов-то, выводить массив не с начала в конец, а с конца в начало
"order by datetime asc" вполне в пхп делается, записи-то уже отсортированы. всего делов-то, выводить массив не с начала в конец, а с конца в начало
Потому что в абстрактном SQL этот порядок не гарантируется, но в mysql можно не сортировать.
Ну и некоторым удобнее вложить больше логики в SQL, чем вспоминать как там в php работать с массивами. Тем более это пара символов.
Потому что в абстрактном SQL этот порядок не гарантируется, но в mysql можно не сортировать.
Ну и некоторым удобнее вложить больше логики в SQL, чем вспоминать как там в php работать с массивами. Тем более это пара символов.
1. я не просто так выделил жирным "уже". посмотрите на запрос, записи два раза сортируются
2. да там вроде в любом случае с массивом работать, что так, что эдак. именно поэтому и не понятна двойная сортировка, зачем?
Зато без вложенного запроса обойтись можно
iopiop, вы неправильно понимаете суть sql. Никаких "уже" и предположений о последовательности выполнения запроса в sql нет. Это декларативный язык. Нужно думать об SQL как о языке описания данных, а не как об инструкциях о последовательности их получения. Тогда смысл приведенного кода будет понятен.
Такой синтаксис не обязан работать в конкретных реализациях SQL, но может - http://troels.arvin.dk/db/rdbms/#select-order_by
Например, в MSSQL синтаксически невозможно указать order by в подзапросе http://msdn.microsoft.com/en-us/library/aa259187%28v=sql.80%29.aspx#_order_by_clause
Кроме случая как у ТС, где можно использовать аналог LIMIT - TOP :
.. ( SELECT TOP N .. ORDER BY .. ) .. ORDER BY
netwind, есть запрос
я предлагаю его поменять на
и поменять порядок обхода массива в пхп на обратный.
так понятнее что я имел ввиду под "уже", "записи два раза сортируются" и "не нужно вложенного запроса" ?