Foros del Web » Programando para Internet » PHP »

consulta para mostrar datos

Estas en el tema de consulta para mostrar datos en el foro de PHP en Foros del Web. hola espero contar con su ayuda soy nuevo en esto y lo que quiero es mostrar los datos de una tabla de la siguiente manera: ...
  #1 (permalink)  
Antiguo 31/07/2012, 12:18
 
Fecha de Ingreso: abril-2012
Mensajes: 8
Antigüedad: 12 años
Puntos: 0
Pregunta consulta para mostrar datos

hola espero contar con su ayuda soy nuevo en esto y lo que quiero es mostrar los datos de una tabla de la siguiente manera:

quiero mostrar los datos de mi tabla por categoría pero que solo se muestre el dato mas reciente por categoría, es decir, si tengo 8 categorías diferentes que me muestre el ultimo dato ingresado por cada categoría. mi tabla esta de la siguiente forma:

id
titulo
imagen
contenido
cuerpo
costo
categoria

la función que ocupo es la siguiente:

<?php
$qry=mysql_query("SELECT * FROM Articulos order by articulos.id DESC, categoria DESC LIMIT 0, 8", $con);
if(!$qry)
{
die("Query Failed: ". mysql_error());
}
while($row=mysql_fetch_array($qry))
{
echo '<div id="categorias"><h2>'.$row['titulo'].'</h2>';
echo '<img src="'.$row['imagen'].'" width=" 180" height="100" hspace="50"/>';
echo '<p>'.substr($row['contenido'],0,200).'<a href=articulo.php?id='.$row['id'].' > Leer más</a></p></div>';
}
?>

si alguien me podría mencionar que es lo que tengo que agregar en mi consulta para lograr lo que quiero se los agradeceré mucho!
  #2 (permalink)  
Antiguo 31/07/2012, 12:24
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 2 meses
Puntos: 155
Respuesta: consulta para mostrar datos

mmm php si jala bien? por que si lo hace, este tema debería ir en SQL para ver lo de la consulta, ahora que pues veo que en tu query
Código SQL:
Ver original
  1. SELECT * FROM Articulos ORDER BY articulos.id DESC, categoria DESC LIMIT 0, 8

ordenas por articulo de forma descendente y después por categoría igual de forma descendente, no funciona ya así? si no , cambia despues de categoria DESC por ASC
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #3 (permalink)  
Antiguo 31/07/2012, 12:50
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años
Puntos: 34
Respuesta: consulta para mostrar datos

esa consulta no es tan fácil. Se resuelve agrupando registros.

Código SQL:
Ver original
  1. SELECT MAX(id) AS id
  2. FROM tabla
  3. GROUP BY categoria
  4. ;

eso te va a dar los maximos id para cada categoría, para sacar los demás datos y que la consulta no se haga un choclazo, lo que podés hacer es crear una vista:

Código SQL:
Ver original
  1. CREATE VIEW view_maximo_id_por_cate AS SELECT MAX(id) AS id
  2. FROM tabla
  3. GROUP BY categoria
  4. ;

y despues le haces un join con la misma tabla
  #4 (permalink)  
Antiguo 31/07/2012, 13:00
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años
Puntos: 34
Respuesta: consulta para mostrar datos

asi sería sin la vista:
Código SQL:
Ver original
  1. SELECT * FROM tabla t2
  2. INNER JOIN (
  3.  
  4. SELECT MAX(t1.id) AS idmaximo
  5. FROM tabla t1
  6. GROUP BY t1.categoria
  7. )AS t2
  8. WHERE idmaximo = id
  #5 (permalink)  
Antiguo 01/08/2012, 10:09
 
Fecha de Ingreso: abril-2012
Mensajes: 8
Antigüedad: 12 años
Puntos: 0
De acuerdo Respuesta: consulta para mostrar datos

Cita:
Iniciado por patriciomase Ver Mensaje
asi sería sin la vista:
Código SQL:
Ver original
  1. SELECT * FROM tabla t2
  2. INNER JOIN (
  3.  
  4. SELECT MAX(t1.id) AS idmaximo
  5. FROM tabla t1
  6. GROUP BY t1.categoria
  7. )AS t2
  8. WHERE idmaximo = id
gracias patriciomase esta consulta es justo lo que necesitaba, y perdón creo que el tema de vio de estar en mysql. les agradezco mucho la ayuda.

Etiquetas: mysql, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:00.