Foros del Web » Programando para Internet » PHP »

hacer consulta por categoria

Estas en el tema de hacer consulta por categoria en el foro de PHP en Foros del Web. Hola amigos tengo estas dos tablas //tabla categoria ID_CATEGORIA DESC_CATEGORIA //tabla seccion ID_SECCION ID_CATEGORIA DESC_SECCION como haria un solo query para que me muestre en ...
  #1 (permalink)  
Antiguo 29/03/2007, 23:56
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 8 meses
Puntos: 21
Pregunta hacer consulta por categoria

Hola amigos tengo estas dos tablas

//tabla categoria
ID_CATEGORIA
DESC_CATEGORIA

//tabla seccion
ID_SECCION
ID_CATEGORIA
DESC_SECCION

como haria un solo query para que me muestre en html la
la categoria encontrada primero y de ahi las secciones que tienen relacion con esa categoria y asi por decir asi

categoria1
-seccion1
-seccion2
-seccion3
categoria2
-seccion4
-seccion5
categoria3
-seccion6
-seccion7

yo normalmente haria es hacer un query para las categoria y en base al array que se crea hago otro query recorriendo la posicion del array pero siento que no es muy optimo asi que mejor les pregunto a los campañeros si en un solo query podre recolectar la informacion como indico arriba

saludos espero sus comentarios

gracias
__________________
gerardo
  #2 (permalink)  
Antiguo 30/03/2007, 00:30
 
Fecha de Ingreso: abril-2006
Ubicación: Colombia
Mensajes: 648
Antigüedad: 17 años, 11 meses
Puntos: 3
Re: hacer consulta por categoria

Hola

Bueno, pues si no lo quieres hacer como lo tienes te tocaria hacer doble consulta a la bd asi por ej

$q = mysql_query("SELECT ID_CATEGORIA, DESC_CATEGORIA FROM categoria");
while($qq = mysql_fetch_array($q))
{
echo $qq[1];
$r = mysql_query("SELECT DESC_SECCION FROM seccion WHERE ID_CATEGORIA='$qq[0]'");
while($rr = mysql_fetch_array($r))
{ echo $rr[0]; }
}

Si no te funciona es porque algo hice mal pues el codigo lo hice a pulso mientras te respondia, pero sin embargo esa es la idea, hacer la consulta a la tabla categoria y luego tomar el idcategoria y enviarlo a otra consulta a la tabla seccion, espero os sirva.
__________________
Suerte.
_______________________________
"La vida es el principio de la muerte".
  #3 (permalink)  
Antiguo 30/03/2007, 09:03
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 8 meses
Puntos: 21
Pregunta Re: hacer consulta por categoria

gracias patron ah eso me referia que no deso hacer doble consulta y mi pregunta es saber si es posible hacerlo con un solo query, no se si la solucion es hacer join?

saludos
y gracias por responder amigo
__________________
gerardo
  #4 (permalink)  
Antiguo 30/03/2007, 09:24
 
Fecha de Ingreso: julio-2002
Mensajes: 322
Antigüedad: 21 años, 8 meses
Puntos: 0
Re: hacer consulta por categoria

Ahí va...

Código PHP:
$q mysql_query("select t1.DESC_CATEGORIA, t2.* FROM categoria as t1, seccion as t2 where t1.ID_CATEGORIA = t2.ID_CATEGORIA order by ID_CATEGORIA, ID_SECCION");
$categoria = -1;

while (
$qq mysql_fetch_array($q))
{
    if (
$categoria != $qq['ID_CATEGORIA']) {

          echo(
$qq['DESC_CATEGORIA']);
          
$categoria $qq['ID_CATEGORIA'];

    }

    echo 
$qq['DESC_SECCION'];


__________________
Saludos

Rubén
Teléfonos móviles, curiosidades: http://telefonos-moviles.muchodenada.com/
  #5 (permalink)  
Antiguo 30/03/2007, 09:30
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 8 meses
Puntos: 21
Sonrisa Re: hacer consulta por categoria

hola ruben gracias por contestar oye se ve bien el script no se si sea mucha molestia pero me podrias explicar como trabaja en sentido del manejo de as y de t1.....t2..

espero que no sea mucha inconveniencia
pero muchas gracias por la respuesta
saludos
__________________
gerardo
  #6 (permalink)  
Antiguo 30/03/2007, 09:45
 
Fecha de Ingreso: julio-2002
Mensajes: 322
Antigüedad: 21 años, 8 meses
Puntos: 0
Re: hacer consulta por categoria

Hola gerardo,

molestia ninguna ;)

esos t1 y t2 son alias. Para simplificar la escritura en una consulta con varias tablas, acostumbro (yo y muchos) a usarlos.
Al poner COMO_SE_LLAME_LA_TABLA as t1 estás indicando que en esa consulta, cuando hagas referencia a t1 te estarás refiriendo a dicha tabla.

De esta forma puedes escribir:

t1.ID_CATEGORIA = t2.ID_CATEGORIA

en vez de CATEGORIAS.ID_CATEGORIA = SECCIONES.ID_CATEGORIA
__________________
Saludos

Rubén
Teléfonos móviles, curiosidades: http://telefonos-moviles.muchodenada.com/
  #7 (permalink)  
Antiguo 30/03/2007, 09:50
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 8 meses
Puntos: 21
De acuerdo Re: hacer consulta por categoria

orale gracias Ruben
observo que tambien usas una variable para saber si estoy en la categoria
$categoria = -1;
if ($categoria != $qq['ID_CATEGORIA'])

pense que el query ya te arrojaba el orden pero es un buena idea

saludos y gracias
__________________
gerardo
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 07:05.