|
|
|
sql запрос: 2 связанных таблицы, только 10 записей
|
|||
|---|---|---|---|
|
#18+
Данный запрос считает количество постов определенного типа (posts.tip = 0) для каждой рубрики: SELECT dirs.name, dirs.id, SUM(!posts.tip) AS nn FROM dirs LEFT JOIN posts ON posts.rid=dirs.id WHERE dirs.sid=0 GROUP BY dirs.id ВОПРОС: Как посчитать то-же самое (количество posts.tip=0 для каждой рубрики) - но для последних 10 записей posts? dirs - рубрики posts - посты в рубриках posts.tip = 0 - картинка posts.tip = 1 - текст Последние 10 записей - это то, что выводится на первой странице каждого раздела dirs. Я хочу посчитать сколько будет постов-картинок на первой странице каждого раздела. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2014, 17:18:03 |
|
||
|
sql запрос: 2 связанных таблицы, только 10 записей
|
|||
|---|---|---|---|
|
#18+
навскидку Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2014, 17:57:41 |
|
||
|
sql запрос: 2 связанных таблицы, только 10 записей
|
|||
|---|---|---|---|
|
#18+
Так? Код: sql 1. Минут 5 как пытается обработать. Да, в таблице posts - 60.000 записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2014, 19:52:33 |
|
||
|
sql запрос: 2 связанных таблицы, только 10 записей
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2014, 20:50:52 |
|
||
|
sql запрос: 2 связанных таблицы, только 10 записей
|
|||
|---|---|---|---|
|
#18+
Cygapb-007, на маленькой таблице (1000 записей) хорошо отработал. А большая - долго висит до таймаута. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 00:28:57 |
|
||
|
sql запрос: 2 связанных таблицы, только 10 записей
|
|||
|---|---|---|---|
|
#18+
большая - это 60.000 записей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 00:32:11 |
|
||
|
sql запрос: 2 связанных таблицы, только 10 записей
|
|||
|---|---|---|---|
|
#18+
Вот вариант с переменными. Я его не тестил, но думаю смысл понятен. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 12:31:21 |
|
||
|
sql запрос: 2 связанных таблицы, только 10 записей
|
|||
|---|---|---|---|
|
#18+
AlexeyVD, SUM(!sel.tip) - итого посчитало верно =500 для первой рубрики. SUM(!sel.tip AND sel.top10) =432 - а должно же быть не более 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 19:58:10 |
|
||
|
sql запрос: 2 связанных таблицы, только 10 записей
|
|||
|---|---|---|---|
|
#18+
http://sqlfiddle.com/#!2/1d7b9c/1 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 20:22:32 |
|
||
|
sql запрос: 2 связанных таблицы, только 10 записей
|
|||
|---|---|---|---|
|
#18+
Cygapb-007, Получилось для первой рубрики: qty=9826 - общее кол-во в рубрике tip0=500 - общее кол-во с tip==0 Посчитать именно в десятке последних так и не получилось :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2014, 20:56:23 |
|
||
|
sql запрос: 2 связанных таблицы, только 10 записей
|
|||
|---|---|---|---|
|
#18+
Да, на малом объеме тот вариант работает, но смущало бесполезное вложенное select order by... Вот так вроде должно сработать, причем довольно быстро... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 10:34:36 |
|
||
|
sql запрос: 2 связанных таблицы, только 10 записей
|
|||
|---|---|---|---|
|
#18+
забыл в join дописать and d.sid=0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 10:37:10 |
|
||
|
sql запрос: 2 связанных таблицы, только 10 записей
|
|||
|---|---|---|---|
|
#18+
linkiAlexeyVD, SUM(!sel.tip) - итого посчитало верно =500 для первой рубрики. SUM(!sel.tip AND sel.top10) =432 - а должно же быть не более 10. Проверил запрос, правда на своих таблицах, сделал похожую выборку. Всё прекрасно отработало. Проверьте как следует не забыли ли вы где-нибудь чего-нибудь. Я же точнее подсказать вам не могу, т.к. вашей базы у меня нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 13:19:08 |
|
||
|
sql запрос: 2 связанных таблицы, только 10 записей
|
|||
|---|---|---|---|
|
#18+
Cygapb-007, не работает, отдает tops=500 а должно не более 10. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2014, 21:07:16 |
|
||
|
sql запрос: 2 связанных таблицы, только 10 записей
|
|||
|---|---|---|---|
|
#18+
Разбирал по частям: @npp:=if(@id=t.rid,@npp+1,(@id:=t.rid)/t.rid-1) npp у меня возвращает для всех = 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 04:17:35 |
|
||
|
sql запрос: 2 связанных таблицы, только 10 записей
|
|||
|---|---|---|---|
|
#18+
А запрос: select id pid,rid,tip, @id as tmp, @npp:=if(@id=t.rid,@npp+1,(@id:=t.rid)/t.rid-1) npp from posts t order by t.rid, t.id desc pid rid tip tmp npp 1590 1 1 NULL 0 1589 1 1 NULL 0 Т.е. @id для всех строк NULL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 04:25:56 |
|
||
|
sql запрос: 2 связанных таблицы, только 10 записей
|
|||
|---|---|---|---|
|
#18+
MySQL 5.5.25 - MySQL Community Server (GPL) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 04:29:12 |
|
||
|
sql запрос: 2 связанных таблицы, только 10 записей
|
|||
|---|---|---|---|
|
#18+
linki, вы не забыли проинициализировать переменные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 05:31:03 |
|
||
|
sql запрос: 2 связанных таблицы, только 10 записей
|
|||
|---|---|---|---|
|
#18+
когда делаете топ-10 выборку, надо следить за памятью на больших обьемах. Если процее вылетает на диск -- плохо однозначно. Один из способов избежать: сделайте на переменным сначала одну выборку ТОЛЬКО ИД постов (или что там у вас), затем эти ИД сжините опять на нужные таблицы и подсчитывайте агрегаты. А вообше, попробуйте сделать предварительный подсчет агрегатов. Ну скажем раз в день или раз в час. Неужели вам такой результат нужен прямо в реал-тайм ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 05:36:31 |
|
||
|
sql запрос: 2 связанных таблицы, только 10 записей
|
|||
|---|---|---|---|
|
#18+
javajdbc, http://sqlfiddle.com/#!2/c9d26/1 - тут все работает. повторяю ВСЕ один в один (создание таблиц, запросы) у себя - не работает select d.name, d.id, p.tip, p.id pid, @npp:=if(@id=d.id,@npp+1,(@id:=d.id)/d.id-1) npp from dirs d left join ( select id,rid,tip from posts t order by t.rid, t.id desc )p on p.rid=d.id where d.sid=0 @id - все время NULL Может какая настройка нужна? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 05:50:08 |
|
||
|
sql запрос: 2 связанных таблицы, только 10 записей
|
|||
|---|---|---|---|
|
#18+
И вообще в phpMyAdmin: SET @var1='RUS'; SELECT @var1; Отдает: @var1 NULL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 06:02:31 |
|
||
|
sql запрос: 2 связанных таблицы, только 10 записей
|
|||
|---|---|---|---|
|
#18+
linkijavajdbc, http://sqlfiddle.com/#!2/c9d26/1 - тут все работает. повторяю ВСЕ один в один (создание таблиц, запросы) у себя - не работает select d.name, d.id, p.tip, p.id pid, @npp:=if(@id=d.id,@npp+1,(@id:=d.id)/d.id-1) npp from dirs d left join ( select id,rid,tip from posts t order by t.rid, t.id desc )p on p.rid=d.id where d.sid=0 @id - все время NULL Может какая настройка нужна? http://sqlfiddle.com/#!2/c9d26/1 ух ты! создатели этой програмы перестарались! Настояший MySQL требует иницилизации параметров. (По крайней мере я не видел что работало без инициализации). Попробуйте так (логику не проверял, я просто добавил инициализацию): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 09:47:22 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38551345&tid=1835267]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
59ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 347ms |

| 0 / 0 |
