|
|
|
Выборка из нескольких таблиц с сортировкой
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, люди добрые! Помогите с задачей, не могу разобраться. Есть три таблицы News (Новости), Blogs (Блоги) и Posts (Посты). У каждой таблицы есть общее поле createTime. А задача то простая - получать постранично смесь строк из этих таблиц, отсортированных по createTime. Пробовал на вскидку "SELECT * FROM News JOIN Blog JOIN Post ORDER BY createTime DESC LIMIT 0, 10", но запрос ошибочен, просит указать принадлежность createTime, если написать, например, "ORDER BY News.createTime", то результат совсем не тот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2018, 10:53 |
|
||
|
Выборка из нескольких таблиц с сортировкой
|
|||
|---|---|---|---|
|
#18+
ball37, думается, вам тут нужно объединение (UNION [ALL]) таблиц, а не соединение (JOIN)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2018, 11:11 |
|
||
|
Выборка из нескольких таблиц с сортировкой
|
|||
|---|---|---|---|
|
#18+
ball37, или если и JOIN, то не самих исходных таблиц, а производных от них: select * from (select * FROM News ORDER BY createTime DESC LIMIT 0, 10) t1 cross join (select * FROM Blog ORDER BY createTime DESC LIMIT 0, 10) t2 cross join (select * FROM Post ORDER BY createTime DESC LIMIT 0, 10) t3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2018, 11:13 |
|
||
|
Выборка из нескольких таблиц с сортировкой
|
|||
|---|---|---|---|
|
#18+
LIMIT может дать "кривой результат". Если надо уменьшить число объединяемых строк, то надо использовать WHERE createTime >= @some_time во всех субзапросах, а лимитить уже во внешнем запросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2018, 11:22 |
|
||
|
Выборка из нескольких таблиц с сортировкой
|
|||
|---|---|---|---|
|
#18+
Щукина Анна, К сожалению, ваш запрос даёт не совсем тот результат. Моя задача требует выдачу строк именно вперемешку, как если бы это была одна таблица. В вашем случае получается, что сперва выдаст строки из News (внутри отсортированные), только потом из Blog (также внутри себя отсортированные). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2018, 11:33 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39698902&tid=1829635]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 136ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...