MySQL подгруппа? - PullRequest
       9

MySQL подгруппа?

0 голосов
/ 09 января 2010

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

У меня есть таблица (1 таблица) со следующими столбцами: name, source, destination, count

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

Пока все, что у меня есть, это запрос:

SELECT name, destination, source, COUNT(*) FROM clicks_today GROUP BY name, destination, source

Что дает мне такие группы:

group 1
- name 1
- destination 1
- source 1

group 2
- name 1
- destination 2
- source 2

(etc)

Что мне действительно нравится, так это:

group 1
- name 1
  - destination 1
  - source 1
  - destination 2
  - source 2

group 2
- name 2
  - destination 1
  - source 1
  - destination 2
  - source 2

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

Это имеет смысл? Как я могу это сделать?

1 Ответ

1 голос
/ 09 января 2010

Я не думаю, что есть (не избитый) способ вернуть результаты точно таким же образом без реализации какой-либо процедуры / курсора (см. Еще раз: взломанный), поэтому я рекомендую использовать PHP, чтобы получить то, что вы хотитеа именно:

while ($row = mysql_fetch_assoc($q)) {
    $results[$row['name']][$row['destination']][] = $row['source'];
}

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

array(
    name1 => array(
        destination1 => array(
            source1,
            source2,
            // ...
        ),
        destination2 => array(
            // ...
        ),
    ),
    name2 => array(
        // ...
    ),
    // ...
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...