X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Подсчет значений
Letmetouchyou
Letmetouchyou
Topic Starter сообщение 20.6.2011, 11:14; Ответить: Letmetouchyou
Сообщение #1


Напимер есть таблица
id | key1

id - уникальный ключ, автоикремент
key1 - пусть ето будет int, идентификатор записи в для другой таблицы, который можт повторяться.
Напрмиер
id | key
_______
1 | 12
2 | 13
3 | 7
4 | 12
5 | 13



Нужено выбрать всезаписи из таблицы, вместе с количеством повторяющихся ключей.

что то вроде
select * from `tbl` as `t` left join ( select `key`, count(`id`) from `tbl ) as `key_count` on `key_count`.`id` = `t`.`id`

Но оно считает для первой записи асолютно все ключи, а для остальных записей вообще не выполняется.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Webmaster_hb
Webmaster_hb
сообщение 20.6.2011, 11:21; Ответить: Webmaster_hb
Сообщение #2


select
key,
count(key)
from tbl1 group by
key
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Letmetouchyou
Letmetouchyou
Topic Starter сообщение 20.6.2011, 11:44; Ответить: Letmetouchyou
Сообщение #3


Webmaster, спасибо, на отдельном примере все работает. Но я тогда не пойму почему так:

select *, count(`bc`.`user_bet_id`) as `comments_count` from `bet_comments` as `bc`

left join ( select `id`, `login`, CASE
WHEN `photo` = "" THEN "nophoto.png"
ELSE `photo`
END AS `user_photo`
from `users`) as `u` on `u`.`id` = `bc`.`user_id`

left join ( select `user_id`, `bet_title` from `user_bets` ) as `ub` on `ub`.`user_id` = `bc`.`user_id`


group by `bc`.`user_bet_id`

order by `bc`.`time` desc


так не работает, точнее работает на половину.
Результат такой:

Array
(
[0] => Array
(
[id] => 174
[user_bet_id] => 86
[user_id] => 174
[comment] => hm
[time] => 1308061549
[login] => admin
[user_photo] => nophoto.png
[bet_title] => Brian Scalabrine of the Boston Celtics have 0 Defensive Rebounds exactly in February 2011
[comments_count] => 7
)

[1] => Array
(
[id] => 191
[user_bet_id] => 98
[user_id] => 191
[comment] => fwe
[time] => 1308051935
[login] => better
[user_photo] => 1308052623_p1_sportsman.jpg
[bet_title] => Andrey win the tournament on December 2011.
[comments_count] => 64
)

[2] => Array
(
[id] => 191
[user_bet_id] => 58
[user_id] => 191
[comment] => f
[time] => 1308050952
[login] => better
[user_photo] => 1308052623_p1_sportsman.jpg
[bet_title] => Andrey win the tournament on December 2011.
[comments_count] => 64
)

[3] => Array
(
[id] => 191
[user_bet_id] => 54
[user_id] => 191
[comment] => check chat
[time] => 1308046405
[login] => better
[user_photo] => 1308052623_p1_sportsman.jpg
[bet_title] => Andrey win the tournament on December 2011.
[comments_count] => 64
)

[4] => Array
(
[id] => 191
[user_bet_id] => 55
[user_id] => 191
[comment] => 1
[time] => 1307442857
[login] => better
[user_photo] => 1308052623_p1_sportsman.jpg
[bet_title] => Andrey win the tournament on December 2011.
[comments_count] => 128
)

....


Первое значение посчитало правильно, остальные нет. В чем пробелма?

То есть если убрать все join то все номрально, а с ними нет.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Letmetouchyou
Letmetouchyou
Topic Starter сообщение 20.6.2011, 12:48; Ответить: Letmetouchyou
Сообщение #4


Решил пока так
select * from `bet_comments` as `bc`

left join ( select `id`, `login`, CASE
WHEN `photo` = "" THEN "nophoto.png"
ELSE `photo`
END AS `user_photo`
from `users`) as `u` on `u`.`id` = `bc`.`user_id`

left join ( select `user_id`, `bet_title` from `user_bets` ) as `ub` on `ub`.`user_id` = `bc`.`user_id`

left join ( select id, count(*) as `comment_count` from `bet_comments` group by `user_bet_id`) as `cc` on `cc`.`id` = `bc`.`id`

group by `bc`.`user_bet_id`

order by `bc`.`time` desc


но как то не особонравиться :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
BigBoy_hb
BigBoy_hb
сообщение 20.6.2011, 15:00; Ответить: BigBoy_hb
Сообщение #5


SELECT id, key, (SELECT COUNT(*) FROM table WHERE key = A.key) count
FROM Table A


Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыКак сделать подсчет рейтинга плюсов и минусов на wordpress?
9 prolisk 9361 17.10.2016, 18:08
автор: prolisk
Открытая тема (нет новых ответов) Помогите сделать подсчет в таблице из из базы данных на сайте
2 Сергей климанов 3303 13.7.2012, 23:40
автор: -Сергей климанов-
Открытая тема (нет новых ответов) Вывод в цикле значений из базы!
3 Panich 4259 27.5.2011, 16:14
автор: -Panich-


 



RSS Текстовая версия Сейчас: 23.4.2024, 22:22
Дизайн