|
|
|
JOIN c подзапросом и подсчётом количества строк
|
|||
|---|---|---|---|
|
#18+
Добрый день! Есть таблица с записями. Получаем из неё записи так: SELECT * FROM _USER_POSTS WHERE USER_ID='XX' and STATUS='check' ORDER BY DATE ASC; Есть таблица, в которой собраны все действия над записью. Получаем их так: SELECT * FROM _POST_ACTIONS WHERE POST_ID='XX'; Есть необходимость вывести все записи с посчитанным количеством действий над записью. Всю голову сломал, как это реализовать через JOIN. Заранее благодарен за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2014, 10:52:18 |
|
||
|
JOIN c подзапросом и подсчётом количества строк
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2014, 11:13:54 |
|
||
|
JOIN c подзапросом и подсчётом количества строк
|
|||
|---|---|---|---|
|
#18+
Akina, Нужно количество действий отдельно по каждому посту. И таких постов могут быть сотни. Сейчас, это висит так: SELECT * FROM _USER_POSTS WHERE USER_ID='XX' and STATUS='check' ORDER BY DATE ASC; а затем while(){ SELECT COUNT(*) FROM _POST_ACTIONS WHERE POST_ID='XX'; } Работать эта жуть может пару минут, что просто кошмарно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2014, 11:23:59 |
|
||
|
JOIN c подзапросом и подсчётом количества строк
|
|||
|---|---|---|---|
|
#18+
PppvasНужно количество действий отдельно по каждому посту. И таких постов могут быть сотни.Да хоть миллионы. Сформулируй правильно критерий группировки и построй необходимые выражения отбора и группировки (и, возможно, второго отбора). PppvasРаботать эта жуть может пару минут, что просто кошмарно.Вот ведь странность - если сделать через задницу, то и работает через задницу... с чего бы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2014, 12:32:03 |
|
||
|
JOIN c подзапросом и подсчётом количества строк
|
|||
|---|---|---|---|
|
#18+
авторДа хоть миллионы. Сформулируй правильно критерий группировки и построй необходимые выражения отбора и группировки (и, возможно, второго отбора). Да, вы правы. Заработало. Но с одним недостатком. Записи, где COUNT(post_actions.id) = 0 - не попадают в выборку. Можно в рамках этого запроса устранить эту проблему? Меня всё время тянет на LEFT JOIN... авторВот ведь странность - если сделать через задницу, то и работает через задницу... с чего бы? Конечно через задницу. Но увы, оно уже так написано, и было написано до меня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2014, 19:44:26 |
|
||
|
JOIN c подзапросом и подсчётом количества строк
|
|||
|---|---|---|---|
|
#18+
PppvasавторДа хоть миллионы. Сформулируй правильно критерий группировки и построй необходимые выражения отбора и группировки (и, возможно, второго отбора). Да, вы правы. Заработало. Но с одним недостатком. Записи, где COUNT(post_actions.id) = 0 - не попадают в выборку. Можно в рамках этого запроса устранить эту проблему? Меня всё время тянет на LEFT JOIN... авторВот ведь странность - если сделать через задницу, то и работает через задницу... с чего бы? Конечно через задницу. Но увы, оно уже так написано, и было написано до меня. ничего не через задницу. скл просто надо выучить основы!!! и будет счастье джоин заменить не left join ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2014, 20:11:58 |
|
||
|
JOIN c подзапросом и подсчётом количества строк
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, А где вы здесь: авторSELECT COUNT(DISTINCT post_actions.post_id) postCount, COUNT(DISTINCT post_actions.id) postActions FROM user_posts, post_actions WHERE user_posts.id = post_actions.post_id AND [остальные условия отбора] GROUP BY [в каком разрезе нужна статистика] видите JOIN? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2014, 20:16:34 |
|
||
|
JOIN c подзапросом и подсчётом количества строк
|
|||
|---|---|---|---|
|
#18+
PppvasА где вы здесь видите JOIN? Это INNER JOIN. Вообще-то. И то, что именно этих слов в песне нету, ничего не меняет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2014, 20:45:24 |
|
||
|
JOIN c подзапросом и подсчётом количества строк
|
|||
|---|---|---|---|
|
#18+
Akina, Переписал так: Код: sql 1. 2. 3. 4. 5. Это корректно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2014, 21:02:22 |
|
||
|
JOIN c подзапросом и подсчётом количества строк
|
|||
|---|---|---|---|
|
#18+
Проблема в том, что мой вариант с LEFT JOIN выполняется более 10 секунд. А ваш за 0.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2014, 21:05:43 |
|
||
|
JOIN c подзапросом и подсчётом количества строк
|
|||
|---|---|---|---|
|
#18+
Pppvas, Код: sql 1. 2. 3. 4. 5. И сделай индекс на post_actions.post_id, если его там нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2014, 04:21:16 |
|
||
|
JOIN c подзапросом и подсчётом количества строк
|
|||
|---|---|---|---|
|
#18+
sigmov, авторSELECT user_posts.id , COUNT(SELECT * FROM post_actions WHERE post_actions.post_id = user_posts.post_id) postActions FROM user_posts WHERE user_posts.user_id = 'ZZ' AND user_posts.status = 'checked' Ругается на синтаксис. Пробовал даже так написать: Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2014, 10:24:35 |
|
||
|
JOIN c подзапросом и подсчётом количества строк
|
|||
|---|---|---|---|
|
#18+
Pppvasalex564657498765453, А где вы здесь: авторSELECT COUNT(DISTINCT post_actions.post_id) postCount, COUNT(DISTINCT post_actions.id) postActions FROM user_posts, post_actions WHERE user_posts.id = post_actions.post_id AND [остальные условия отбора] GROUP BY [в каком разрезе нужна статистика] видите JOIN? сдесь нет а в этих словах ДА Есть необходимость вывести все записи с посчитанным количеством действий над записью. Всю голову сломал, как это реализовать через JOIN. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2014, 11:11:12 |
|
||
|
JOIN c подзапросом и подсчётом количества строк
|
|||
|---|---|---|---|
|
#18+
Pppvas Код: sql 1. Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2014, 11:12:21 |
|
||
|
JOIN c подзапросом и подсчётом количества строк
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. переиначишь под себя, я вчера тестил по твоей теме, ещо остался в клиенте... да, тут уже в соседней ветке нащёт скорости, столкнулись с тем, что вариант с джоином медленее чем вложеный под запрос с подщётом количества ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2014, 11:13:16 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38818783&tid=1833878]: |
0ms |
get settings: |
4ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
29ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 279ms |

| 0 / 0 |
