Foros del Web » Programando para Internet » PHP »

Consulta slq

Estas en el tema de Consulta slq en el foro de PHP en Foros del Web. Buenas gente. Me he topado con una grandísima duda la cual me esta reventando la cabeza y por mas que busco no encuentro una solución ...
  #1 (permalink)  
Antiguo 27/11/2012, 12:04
Avatar de danny_  
Fecha de Ingreso: septiembre-2012
Mensajes: 95
Antigüedad: 12 años, 2 meses
Puntos: 4
Consulta slq

Buenas gente.

Me he topado con una grandísima duda la cual me esta reventando la cabeza y por mas que busco no encuentro una solución a este problema.

Tengo 2 tablas, una que contiene categorias la cual tiene 2 campos, uno con el nombre de la categoria y otro con su respectivo id.

La segunda tabla tiene las subcategorías que pertenecen a su respectiva categoría de la tabla categoría.

Es decir, lo que intento hacer es que me imprima una consulta tipo...

Categoria1
subcategoria
subcategoria
subcategoria

Categoria2
subcategoria
subcategoria
subcategoria

Busco sobretodo que las subcategorias que imprima vayan relacionadas con la id de su categoria.

He intentado hacerlo de varias formas con LEFT JOIN pero no doy con el modo de conseguir esta consulta.

El fallo que tengo es que me imprime el nombre de la categoría tantas veces como los resultados de subcategoria, no encuentro la forma de hacer que se imprima el nombre de su categoria y por debajo sus subcategorias.

os dejo el código que de momento he conseguido hacer (sin éxito todavía), pero así le podéis echar un ojito.
Cita:
$idcon=mysqli_connect('localhost','root','');
mysqli_select_db($idcon,'database');

$sql="SELECT categorias.categoria, subcategorias.sub_categoria
FROM
categorias
INNER JOIN
subcategorias on categorias.id_categoria=subcategorias.id_categoria ";
$res=mysqli_query($idcon,$sql)or die(mysqli_error($idcon));

while($row=mysqli_fetch_assoc($res)){
$categorias.="<ul><h2 class='red'><a class='red' href='articulos.html'>".$row['categoria']."</a></h2>
<li><a href=''>".$row['sub_categoria']."</a></li>
</ul>";


}
echo $categorias;


Alguien que se haya topado con mi mismo problema que me pueda echar una mano le estaría muy agradecido.


Un saludo y gracias.

Última edición por danny_; 27/11/2012 a las 12:15
  #2 (permalink)  
Antiguo 27/11/2012, 15:52
Avatar de DeivisAndres  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia
Mensajes: 305
Antigüedad: 12 años, 9 meses
Puntos: 41
Respuesta: Consulta slq

Parece que lo que quieres hacer es un menu, entonces hechale un vistazo a esta pagina te puede guiar un poco: Menu dinámico con PHP y CSS Drop-down menu framework.
  #3 (permalink)  
Antiguo 27/11/2012, 15:57
 
Fecha de Ingreso: enero-2006
Ubicación: Lima
Mensajes: 20
Antigüedad: 18 años, 10 meses
Puntos: 2
Respuesta: Consulta slq

esto te debe solucionar tu problema

<?php
$idcon=mysqli_connect('localhost','root','');
mysqli_select_db($idcon,'database');

$sql="select * from categorias";
$res=mysqli_query($idcon,$sql)or die(mysqli_error($idcon));

while($row=mysqli_fetch_assoc($res)){
$categorias.="<ul><h2 class='red'><a class='red' href='articulos.html'>".$row['categoria']."</a></h2>";
$sql_1=mysql_query("select * from subcategorias where id_categoria='".$row['id_categoria']."'");
while ($surow=mysql_fetch_array($sql_1))
{
$categorias.="<li><a href=''>".$surow['sub_categoria']."</a></li> ";
}

$categorias.="</ul>";


}
echo $categorias;

?>

Última edición por punknomas; 27/11/2012 a las 16:03
  #4 (permalink)  
Antiguo 28/11/2012, 20:02
Avatar de danny_  
Fecha de Ingreso: septiembre-2012
Mensajes: 95
Antigüedad: 12 años, 2 meses
Puntos: 4
Respuesta: Consulta slq

Eres un crack punkomas!! eres un crack!!

Mil gracias y toma karma.
  #5 (permalink)  
Antiguo 28/11/2012, 21:15
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años, 7 meses
Puntos: 34
Respuesta: Consulta slq

aunque ese código funcione, es un desperdicio de recursos enorme.

para un menú de 10 categorías x 5 subcategorias en c/u va a consultar 50 veces a la base de datos.

NUNCA metas consultas en bucles. A menos que sea indispensable.

Ese problema se soluciona haciendo un join tal cual lo estas haciendo, y luego acomodás la info en un array y la trabajas ahi. De esa forma solo conectas una vez con la base de datos para traer la info y ya.
  #6 (permalink)  
Antiguo 29/11/2012, 09:48
Avatar de danny_  
Fecha de Ingreso: septiembre-2012
Mensajes: 95
Antigüedad: 12 años, 2 meses
Puntos: 4
Respuesta: Consulta slq

lo sé, pero me cuesta horrores hacerlo en una sola consulta con un join, no tengo mucha experiencia con sql. Gracias por el consejo de todas formas!

Un saludo.
  #7 (permalink)  
Antiguo 29/11/2012, 09:55
Avatar de danny_  
Fecha de Ingreso: septiembre-2012
Mensajes: 95
Antigüedad: 12 años, 2 meses
Puntos: 4
Respuesta: Consulta slq

Cómo se podría acomodar en un array?? si me echas una mano te estaría agradecidísimo!

Etiquetas: slq, 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 14:11.