Вопрос по mysql

M
На сайте с 20.08.2004
Offline
376
688

Что то не могу придумать как сделать выборку сумм одинаковых чисел из таблицы

например есть числа 1,2,3,4,5. Надо узнать сколько записей с каждыми из цифр, причем получить результат одним селетом и одноуровневым.

Так не катит

Array
(
[0] => Array
(
[num] => 1
[qty] => 11
)

[1] => Array
(
[num] => 2
[qty] => 5
)
.....
)

надо получить вот такой результат

Array
(
[1] => Array
(
[qty] => 11
)

[2] => Array
(
[qty] => 5
)
.....
)

Можно ли такое сделать?

И очень желательно что бы запрос не был очень сложным и ресурсоемким.

Спасибо.

отец сыночка, лапочки дочки и еще одного сыночка
orphelin
На сайте с 02.07.2006
Offline
261
#1

а типа такого

SELECT COUNT( * ) , `num`

FROM a

GROUP BY `num`

ну а потом foreach нет?

M
На сайте с 20.08.2004
Offline
376
#2

типа такого сейчас! проблем с форичем нет, но хочется нового и возможно правильного решения.

WT
На сайте с 08.10.2010
Offline
17
#3
Miracle:
типа такого сейчас! проблем с форичем нет, но хочется нового и возможно правильного решения.

Что может быть правильнее самого короткого и оптимального решения?

А насчет foreach'a - в цикле создавайте структуру, которая Вам нужна. Какие проблемы-то?

Не нравится Вам:

$query="SELECT COUNT(*) as c , `num`

FROM a
GROUP BY `num`";
$res=mysql_query($query);
$arr=array();
while ($row=mysql_fetch_assoc($res))
{
$arr[]=$row;
}

Сделайте так(под требуемую Вами структуру):

$query="SELECT COUNT(*) as c , `num`

FROM a
GROUP BY `num`";
$res=mysql_query($query);
$arr=array();
while ($row=mysql_fetch_assoc($res))
{
$arr[$row['num']]=$row['c'];
}

Или объясните что опять не так

За еду не работаю, зарабатываю здесь (http://www.sape.ru/r.amStvLXttk.php) Работа для ленивых - продвигай сайты автоматически (http://seopult.ru/ref.php?ref=1f6f897913cc593f)
M
На сайте с 20.08.2004
Offline
376
#4

я говорю что у меня сейчас так как вы написани! это не самое короткое решение, почему то я так думаю

LEOnidUKG
На сайте с 25.11.2006
Offline
1725
#5
Miracle:
я говорю что у меня сейчас так как вы написани! это не самое короткое решение, почему то я так думаю

Сильная нагрузка на сервер? Долго выполняется скрипт? Нет? Тогда отстаньте от кода :)

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
Dreammaker
На сайте с 20.04.2006
Offline
570
#6
Miracle:
но хочется нового и возможно правильного решения.

Вам нужно новое или правильное решение? Если хотите творчества, то программеры время от времени любят конкурсы на код, выполняющий работу самым замысловатым способом. Если нужен правильный - то вам его написали.

Нужно только поставить индекс на num, и если будут ещё параметры для Where, то в зависимости от их порядка поставить составной индекс на параметр в group by и в where.

M
На сайте с 20.08.2004
Offline
376
#7

я вообще то ждал решений типа вложенных селектов или через жойны...

видимо это единственное решение.

тогда всем спасибо.

Dreammaker
На сайте с 20.04.2006
Offline
570
#8
Miracle:
видимо это единственное решение.

я предполагаю, что это не единственное решение, но в рамках данных в первом посте условий все остальные будут просто излишним фантазированием :)

p.s. GROUP BY как раз для того и предназначен, чтобы проводить групповые операции над строками и ячейчами.

[umka]
На сайте с 25.05.2008
Offline
456
#9
Miracle:
я вообще то ждал решений типа вложенных селектов или через жойны...

вот это как раз и было бы ... через ж

:)

Лог в помощь!
M
На сайте с 20.08.2004
Offline
376
#10
Dreammaker:
p.s. GROUP BY как раз для того и предназначен, чтобы проводить групповые операции над строками и ячейчами.

я все понимаю, я же и говорю, елси бы результат был не трехмерным массивом а двухмерным, было бы то что надо.

[umka:
]вот это как раз и было бы ... через ж

ну раз ответа не дали, зачит видимо так и ест. :)

Miracle добавил 17.12.2010 в 10:39

всем спасибо.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий