Должен ли я использовать GROUP_CONCAT? - PullRequest
0 голосов
/ 11 июля 2011

У меня есть 2 таблицы CP и CS, структурированные следующим образом.

CP
    id    tu    su
    1     7     1
    2     7     2

.---------------------------------.

CS
    id    st    cp
    1     8     1
    2     9     1
    3     9     2
    4     2     1

.--------------------------------.

Я хочу создать функцию get_cp ($ tu), которая будет возвращать такие данные.get_cp (7) =

su
    '1'
        [0] = array('st'=>'8')
        [1] = array('st'=>'9')
        [2] = array('st'=>'2')
    '2'
        [0] = array('st'=>'2')

Кажется, что я мог бы использовать GROUP_CONCAT, чтобы создать строку с разделением по X, а затем проанализировать ее ... но мне было интересно, есть ли "лучший" способ.Парсинг строк кажется расточительным, было бы здорово, если бы MySQL мог просто возвращать данные, подобные этим.Должен ли я просто не использовать GROUP вообще, а затем использовать php для группировки вещей после того, как у меня большой список дубликатов?

Спасибо!И, пожалуйста, задавайте вопросы, если вы не уверены, что я спрашиваю.Спасибо !!

1 Ответ

1 голос
/ 11 июля 2011

Вы можете использовать GROUP_CONCAT(). Вообще говоря, я думаю, что если вы можете сделать это на стороне БД, вы должны.

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

Таким образом, я бы сделал следующий запрос и построил бы группирование с помощью PHP.

$data = array();
$results = mysql_query('SELECT st, cp FROM CS');

while ($row = mysql_fetch_assoc($results)) {
  $data[$row['cp']][] = $row['st'];
}

Примечание: Это не заказано для исполнения. Если они вам нужны в определенном порядке, добавьте ORDER BY.

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