Comunidad de diseño web y desarrollo en internet online

Optimizar consulta con JOIN

Citar            
MensajeEscrito el 20 Mar 2014 03:00 am
Hola amigos tengo una consulta un poco mas compleja que esta, por supuesto la minize para ejemplificar.

Código MySQL :

SELECT *
FROM noticias
JOIN galeria ON noticias.id_gale = galeria.id_gale
WHERE id_noti = 1


La cual arroja un resultado como este:

Código :

id_noti  id_gale  archivo
1         A        uno.jpg
1         A        dos.jpg
1         A        tres.png
1         A        cuatro.png


Si esto lo obtengo de mi array a PHP seria algo como

Código PHP :

$resultado[0][id_noti] = 1
$resultado[0][id_gale] = A
$resultado[0][id_archivo] = uno.jpg

$resultado[1][id_noti] = 1
$resultado[1][id_gale] = A
$resultado[1][id_archivo] = dos.jpg

$resultado[2][id_noti] = 1
$resultado[2][id_gale] = A
$resultado[2][id_archivo] = tres.png


la pregunta es ¿como le hago para obtener o cambiar el resultado a un arreglo como el siguiente?:

Código PHP :

$resultado[id_noti][id_gal] = A
$resultado[id_noti][archivo][0] = uno.jpg
$resultado[id_noti][archivo][1] = dos.jpg
$resultado[id_noti][archivo][2] = tres.png

Porque este segundo es mucho mas facil de manejar, ya hice un procedimiento que me da el segundo resultado. Pero no se si haya algo con MySQL que me lo regrese directo, o denme ideas por favor.

Para ejemplificar, espero obtener la tabla de este tipo:

Código :

id_noti  id_gale  archivo
1         A        uno.jpg, dos.jpg, tres.png, cuatro.png
2         B        Suno.jpg, Sdos.jpg, tsres.png, cSuatro.png


Estoy pensando meter en un campo algo como como

Código PHP :

$resultado[id_noti][archivos] = uno.jpg, dos.jpg, tres.png;




Espero sus comentarios.para saber como optimizarle ;)

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

firefox
Citar            
MensajeEscrito el 24 Mar 2014 01:52 pm
Sólo tienes que trabajar un poco con el array para obtener el array que quieres, digamos:

Código PHP :

//Primero creas un array vacío para almacenar tu nueva salida de datos
$salida = array();

//Ahora recorremos el array resultado
foreach ($resultado as $datos) {
    //Y ahora con los datos vamos rellenado el array
      //Si no está definia en el array de salida esta id noticia,
      //la definimos como un array vacío
      if (! isset($salida[$datos['id_noti']]))
         $salida[$datos['id_noti']] = array();
      
      //Si no está definido el array de galería para esa id_noticia
      //lo definimos de nuevo como un array vacío
      if (! isset($salida[$datos['id_noti']][$datos['id_gale']]))
         $salida[$datos['id_noti']][$datos['id_gale']] = array();
   
      //Y por último incluyes la imagen al archivo
      array_push($salida[$datos['id_noti']][$datos['id_gale']], $datos['archivo']);
   }
   
   //Y este es el array que obtendrías con los datos facilitados
   var_dump($salida);
   
   /*
   array(1) {
      [1]=> array(1) {
         ["A"]=> array(4) {
            [0]=> string(7) "uno.jpg"
            [1]=> string(7) "dos.jpg"
            [2]=> string(8) "tres.jpg"
            [3]=> string(10) "cuatro.jpg"
         }
      }
   }
   */


Espero te sirva,
Un saludo.

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 24 Mar 2014 02:00 pm
Bueno, se me olvidaba que para simplificarlo puedes extraer las variables:

Código PHP :

$salida = array();

foreach ($resultado as $datos) {
    //Extraemos las variables
    extract($datos);

    if (! isset($salida[$id_noti]))
        $salida[$id_noti] = array();

    if (! isset($salida[$id_noti][$id_gale]))
        $salida[$id_noti][$id_gale] = array();

    array_push($salida[$id_noti][$id_gale], $archivo);
}

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.