Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Подскажите с SQL запросом
|
|||
|---|---|---|---|
|
#18+
Приветствую! У меня есть блог работающий на MovableType и Pgsql Мне нужно из базы этого блога в другом месте сайта вывести 10 последних записей - т.е. название записи и ссылка на нее. Я совсем не силен в вопросах SQL, поэтому буду признателен за помощь! Читая всякие маны, я уже узнал как нужно подключится к базе и вывел из нее ряд требуемых характеристик. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. entry_title - это название entry_id - идешник записи entry_class - это тип записи (может быть запись - entry, а может быть страницей - page) entry_authored_on - это дата публикации entry_basename - это урл странички, например name_docs А вот дальше у меня начинаются сложности. 1) Мне нужно получить данные отсортированные по дате, т.е. сперва идут новые. В запросе я поставил ORDER BY entry_authored_on - но он почему то не срабатывает. У меня в списке выводятся новые записи в самом конце. Хотя entry_authored_on - приходит в таком формате 2008-11-18 15:59:40 2) Следующий момент, мне нужно получить только записи у которых entry_class == "entry", т.е. только записи без статичных страничек. 3) Мне нужно вывести тока 10 последних записей. Сейчас приходят все записи 4) Наконец самая большая сложность - сформировать правильный урл. В блоге у записи урл такого вида = /имя_раздела/имя_записи.html В таблице mt_entry есть тока "имя_записи" (entry_basename), как получить "имя_раздела" в которой запись находится ума не приложу. Наверно это находится в другой таблице mt_category, но как это узнать... Спасибо, что прочитали. Буду благодарен за любую помощь и совет! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 13:48 |
|
||
|
Подскажите с SQL запросом
|
|||
|---|---|---|---|
|
#18+
Покопался, вот что написал для решения первых 3-х пунктов по своей задаче. Код: plaintext Т.е. по 1) сортировку получил за счет использования: ORDER BY entry_authored_on DESC Не понятно, почему сортировка ведет себя так странно, не похоже что entry_authored_on приходит строкой... 2) отделил "записи" от "страниц" посредством WHERE entry_class = 'entry' 3) 10-у записей вывел в лоб, указав цикл итерации 10, т.е. for ($i=0; $i<10; $i++) Совсем не уверен, что это правильно, но другого способа я не знаю. Касательно 4-го пункта - вопрос еще решаю. Там картина такая. Нужные мне данне хранятся в 3 таблицах 1) mt_entry - содержит данные о записи 2) mt_placement - содержит привязки записи с категорией 3) mt_category - содержит данные о самой категории, в моем случае нужный мне урл. Думаю, что перед основной итерацией нужно сгенерировать массив с данными по категории (идешник/урл). И потом в самой итерации брать mt_placement.placement_category_id (по сути это идешник категории) и по нему из массива извлекать урл и подставлять в ссылку. Я правильно мыслю или есть более оптимальный вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 19:10 |
|
||
|
Подскажите с SQL запросом
|
|||
|---|---|---|---|
|
#18+
@NET 3) 10-у записей вывел в лоб, указав цикл итерации 10, т.е. for ($i=0; $i<10; $i++) Совсем не уверен, что это правильно, но другого способа я не знаю. LIMIT в запросе. @NET Думаю, что перед основной итерацией нужно сгенерировать массив с данными по категории (идешник/урл). И потом в самой итерации брать mt_placement.placement_category_id (по сути это идешник категории) и по нему из массива извлекать урл и подставлять в ссылку. Я правильно мыслю или есть более оптимальный вариант? Есть, надо использовать соединение таблиц. В интернетах же наверняка есть куча самоучителей SQL, что мешает почитать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 19:22 |
|
||
|
Подскажите с SQL запросом
|
|||
|---|---|---|---|
|
#18+
Ух :) решил и 4-й пункт. Во как надо Код: plaintext Осталось подумать как оптимизировать сам запрос, чтоб брать тока первые 10-ть записей, а не все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 19:27 |
|
||
|
Подскажите с SQL запросом
|
|||
|---|---|---|---|
|
#18+
Sad Spirit@NET 3) 10-у записей вывел в лоб, указав цикл итерации 10, т.е. for ($i=0; $i<10; $i++) Совсем не уверен, что это правильно, но другого способа я не знаю. LIMIT в запросе. Спасибо за наводку, буду копать в этом направлении! Sad Spirit Есть, надо использовать соединение таблиц. В интернетах же наверняка есть куча самоучителей SQL, что мешает почитать? Почитать то ничего не мешает, другое дело, что толково написанных, да с хорошими примерами - очень мало. А уж если речь идет о сложных связках - то ваще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 19:31 |
|
||
|
Подскажите с SQL запросом
|
|||
|---|---|---|---|
|
#18+
Усе, сделал все 4-ре пункта и все в одной строке запроса. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 20:00 |
|
||
|
Подскажите с SQL запросом
|
|||
|---|---|---|---|
|
#18+
@NET1) сортировку получил за счет использования: ORDER BY entry_authored_on DESC Не понятно, почему сортировка ведет себя так странно, не похоже что entry_authored_on приходит строкой...если тип entry_authored_on строковый, а сортировка нужна числовая, то попробуйте сделать приведение к типу: ORDER BY entry_authored_on::integer DESC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2008, 11:34 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=35723907&tid=2003771]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 352ms |

| 0 / 0 |
