sql >> Base de Datos >  >> RDS >> Mysql

PHP, MySQL, SELECT pregunta

Creo que la mejor forma de hacerlo sería en el código PHP, en lugar de SQL.

Puede lograr esto simplemente creando una matriz asociativa en PHP, utilizando el campo "texto" como clave, que contiene los datos que desea, y completándolo a medida que extrae información de la base de datos.

Un ejemplo:

SQL:SELECT * FROM myTable

Código PHP:

<?php

// Connect to MySQL database
$result = mysql_query($sql_query_noted_above);
$stringsInfo = array();
while ($row = mysql_fetch_assoc($result))
{
    if (!isset($stringsInfo[$row['text']]))
    {
        $stringsInfo[$row['text']] = array('types' => array(), 'idAccounts' => array());
    }

    $stringsInfo[$row['text']]['types'][] = $row['type'];
    $stringsInfo[$row['text']]['idAccounts'][] = $row['idAccount'];
}

?>

Esto le dará una matriz de la siguiente manera:

'myTextString' => 'types' => 'type1', 'type2', 'type3'
                  'idAccounts' => 'account1', 'account2'

'anotherTextString' => 'types' => 'type2', 'type4'
                       'idAccounts' => 'account2', 'account3'

y así sucesivamente.

Espero que sea útil.

EDITAR:el póster pidió ayuda con la visualización.

<?php

foreach ($stringsInfo as $string => $info)
{
    echo $string . '<br />';
    echo 'Types: ' . implode(', ', $info['types']); // This will echo each type separated by a comma
    echo '<br />';
    echo 'ID Accounts: ' . implode(', ', $info['idAccounts']);
}

/* Alternativamente, puede repetir cada matriz contenida en $info si necesita más control */

foreach ($stringsInfo as $string => $info)
{
    echo $string . '<br />';
    echo 'Types: ';
    foreach ($info['types'] as $type)
    {
        echo $type . ' - ';
    }
    echo '<br />';
    echo 'ID Accounts: '
    foreach ($info['idAccounts'] as $idAccount)
    {
        echo $idAccount . ' - ';
    }
}