Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Количество строк по id из другой таблицы / 14 сообщений из 14, страница 1 из 1
09.02.2014, 13:38:00
    #38554904
Папа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество строк по id из другой таблицы
Доброго времени суток )
подскажите что делаю неправильно
есть две таблицы в одной хранятся записи в другой комментарии к записям, запрашиваю записи и количество комментариев к ним
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT record.*, 
  users.user_nickname,
  COUNT(comments.id) AS comments_count
FROM record
  LEFT JOIN users ON users.user_id = record.user
  LEFT JOIN comments ON comments.post_id = record.id
WHERE record.post_type = 'post' ORDER BY record.date DESC LIMIT 0 , 5;


запрос возвращает только самую первую запись, ошибок нет
...
Рейтинг: 0 / 0
09.02.2014, 15:19:36
    #38554952
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество строк по id из другой таблицы
Папа,

GROUP BY забыли?
...
Рейтинг: 0 / 0
09.02.2014, 15:26:56
    #38554957
Папа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество строк по id из другой таблицы
если не трудно покажите пример, я уже замучился, что не пробовал не выходит (
...
Рейтинг: 0 / 0
09.02.2014, 17:57:41
    #38555009
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество строк по id из другой таблицы
Папа,

покажите пример исходных данных и
ожидаемый результат.
...
Рейтинг: 0 / 0
09.02.2014, 18:09:59
    #38555019
Папа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество строк по id из другой таблицы
javajdbc,

таблица record
...
Рейтинг: 0 / 0
09.02.2014, 18:11:17
    #38555021
Папа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество строк по id из другой таблицы
javajdbc,

таблица comments
...
Рейтинг: 0 / 0
09.02.2014, 18:16:49
    #38555022
Папа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество строк по id из другой таблицы
Возвращается массив всех элементов
Array
(
[0] => Array
(
[id] => 3365
[wp_id] =>
=>
[seo_title] =>
[seo_description] =>
[topic_title] =>
[text] =>
[cat_teg] => {"cat":["2"],"teg":["6","8"]}
[user] => 1
[views] => 12150
[date] => 1340382079
[modified_page] => 1340382079
[post_status] => publish
[post_type] => post
[count_comments] => 0
[user_nickname] => Приколист
)
[1] => Array
(
)
и так далее

нужно к каждой записи добавить
[comments_count] =>
...
Рейтинг: 0 / 0
09.02.2014, 18:31:39
    #38555029
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество строк по id из другой таблицы
Папа,

ну добавьте груп бу рекорд.ИД

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT record.*, 
  users.user_nickname,
  COUNT(comments.id) AS comments_count
FROM record
  LEFT JOIN users ON users.user_id = record.user
  LEFT JOIN comments ON comments.post_id = record.id
WHERE record.post_type = 'post' 
GROUP BY record.id
ORDER BY record.date DESC
...
Рейтинг: 0 / 0
09.02.2014, 18:43:27
    #38555037
Папа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество строк по id из другой таблицы
javajdbc,

Спасибо, работает :)
только запрос стал тяжелее, записей больше 3000 плюс коменты, наверно нужно логику кода менять
...
Рейтинг: 0 / 0
09.02.2014, 19:08:07
    #38555052
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество строк по id из другой таблицы
Папа,

если вам надо только первые 5 или 50,
тогда выберите их сначала а потом
делайте связку для подсчета, примерно так

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select
*,
(selec cont(1) cnt from coments c where c.post_id = zz.id) cnt_com
from
(
select * from posts p
order by p.date desc
limit 5
) zz
...
Рейтинг: 0 / 0
09.02.2014, 19:19:29
    #38555056
Папа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество строк по id из другой таблицы
javajdbc,

Круто, спасибо :)
...
Рейтинг: 0 / 0
09.02.2014, 21:14:01
    #38555100
retvizan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество строк по id из другой таблицы
javajdbc
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select
*,
(selec cont(1) cnt from coments c where c.post_id = zz.id) cnt_com
from
(
select * from posts p
order by p.date desc
limit 5
) zz


А зачем здесь from-подзапрос? Вычисления в части select идут на последнем этапе (уже после order by). Достаточно
Код: sql
1.
2.
select p.*, (selec count(*) cnt from coments c where c.post_id = p.id) cnt_com
from posts p order by p.date desc limit 5;
...
Рейтинг: 0 / 0
10.02.2014, 07:01:59
    #38555217
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество строк по id из другой таблицы
Папатолько запрос стал тяжелее, записей больше 3000 плюс коменты, наверно нужно логику кода менять

не видно атрибутов wp_id - тоже unsigned?

Короче, тип полей для связи должен быть идентичным если не хотите думать что должна сделать СУБД чтобы сравнить два разных типа, на что уйдет время и память.

wp_id int unsigned not null
comments_wp_id int unsigned not null
...
Рейтинг: 0 / 0
12.02.2014, 10:33:11
    #38558135
Папа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количество строк по id из другой таблицы
deblogger,

Спасибо за совет, вообще эти столбики будут удалены это я переписывал базу из wordpress нужны были старые id-шники :)
Но, важность связываемых типов столбцов я обязательно учту :)
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Количество строк по id из другой таблицы / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]