Foros del Web » Programando para Internet » PHP »

Consulta Mysql

Estas en el tema de Consulta Mysql en el foro de PHP en Foros del Web. Hola, Tengo una pequeña consulta sobre como hacer una consulta (lol) MySQL. Tratare de explicarlo lo mejor posible. Bueno, tengo 5 tablas : * Secciones ...
  #1 (permalink)  
Antiguo 22/10/2008, 14:56
 
Fecha de Ingreso: septiembre-2003
Mensajes: 54
Antigüedad: 20 años, 7 meses
Puntos: 2
Consulta Mysql

Hola,
Tengo una pequeña consulta sobre como hacer una consulta (lol) MySQL.
Tratare de explicarlo lo mejor posible.

Bueno, tengo 5 tablas :
* Secciones (id, nombre, tipo)
* Categorias (id, nombre, seccion, imagen)
* SubCategorias (id, nombre, categoria, imagen)
* SSCategorias (id, nombre, scategoria, imagen)
* ContenidoSec (id, seccion, categoria, scategoria, sscategoria, nombre, descripcion, .... etc)
(categoria, scategoria, sscategoria GUARDA el ID de aquella categoria)

(No tomen en cuenta la tabla 'tipo' de secciones.)

La idea es hacer Secciones con Categorias / Sub-Categorias / Sub-Sub-Categorias.
Ejemplo:

Seccion (id) -> Categoria (id) -> SubCategoria (id) -> SScategoria (id)
Programacion (1) -> Webmaster (1) -> PHP (1) -> Script's (1)
Programacion (1) -> Webmaster (1) -> ASP (2) -> Script's (2)
Programacion (1) -> Webmaster (1) -> HTML (3)
Programacion (1) -> Aplicaciones (2)
Ayuda bla bla (2) -> categoria 1 (3) -> subcate (4)

etc, etc

Y tengo una url tipo:
secciones.php?id=Programacion&cat=Webmaster&ccat=P HP&scat=Scripts

Ya.
Si entro a id=Programacion
Como hago para que me muestre el contenido de la seccion Programacion ?
---------------------
secciones.php?id=Programacion&cat=Webmaster
Como hago para que me muestre el contenido de la seccion Programacion - Categoria Web Master?
---------------------
secciones.php?id=Programacion&cat=Webmaster&ccat=P HP
Como hago para que me muestre el contenido de la seccion Programacion - Categoria WebMaster - Sub categoria PHP ?
---------------------
secciones.php?id=Programacion&cat=Webmaster&ccat=P HP&scat=Scripts
Como hago para que me muestre el contenido de la seccion Programacion - Categoria WebMaster - Sub categoria PHP - Sub Sub Categoria Scripts?

(Todos de la tabla ContenidoSec)

con id seria sencillo... select * from ContenidoSec seccion=$id, categoria=$cat... y ahi compruebo con if si tiene subs categorias o no...

Pero lo quiero con Urls con Nombre, lo unico que se me ocurre es hacer consulta de cada tabla hasta sacar su ID, pero es mucho trabajos y mas codigos.

Existe la posibilidad de hacerlo con una sola consulta?

Gracias
__________________
Kame Kame AH
  #2 (permalink)  
Antiguo 22/10/2008, 15:20
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: Consulta Mysql

Hola

Estudia MySQL y PHP, y perfecto. sin problemas. Y no soy un experto, pero leo.

Lee sobre pasar variables por URL y como se reciben por GET.

pero no pidas tanto, poco a poco.

Un saludo
  #3 (permalink)  
Antiguo 22/10/2008, 15:22
 
Fecha de Ingreso: septiembre-2003
Mensajes: 54
Antigüedad: 20 años, 7 meses
Puntos: 2
Respuesta: Consulta Mysql

Sé como recibir variables por medio de URL's

Creo que no entendiste bien el mensaje =/.
__________________
Kame Kame AH
  #4 (permalink)  
Antiguo 22/10/2008, 15:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Consulta Mysql

Puedes usar INNER JOIN para meter en la consulta directamente el nombre y asi traer el nombre en lugar del ID.

Saludos.
  #5 (permalink)  
Antiguo 22/10/2008, 18:43
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 5 meses
Puntos: 25
Respuesta: Consulta Mysql

"Te preguntaras como haces un JOIN ?"

clientes
id_cliente
nombre
apellidos

saldo
id_saldo
monto

SELECT clientes.nombres, clientes.apellidos, saldo.monto FROM clientes
WHERE clientes.id_cliente = saldo.id_saldo;

saludo espero que te sirva..

NOTA SABIONDA: lo que se puede ver arriba. es la comparacion de ambas tablas , con la relacion de un enumerador o un valor de comun denominador para ambas tablas.
__________________
O nos hacemos miserables o nos hacemos fuertes , la cantidad de trabajo es la misma.
  #6 (permalink)  
Antiguo 23/10/2008, 05:42
 
Fecha de Ingreso: septiembre-2003
Mensajes: 54
Antigüedad: 20 años, 7 meses
Puntos: 2
Respuesta: Consulta Mysql

Pero como lo hago para que tome el ID del _GET[] ?

Tenía pensando hacerlo:

Código PHP:
// consulta Seccion
$idseccion=$row[id];
//consulta Categorias
$idcategoria=$row[id];
// consulta SubCategorias 
$idsubcategorias=$row[id];
// consulta SScategorias
$idsscategorias=$row[id];

// comprobar si ha entrado a una seccion/cat/subca/sscat
// secciones.php?id=Programacion&cat=Webmaster&ccat=P HP&scat=Scripts
// * ContenidoSec (id, seccion, categoria, scategoria, sscategoria, nombre, descripcion, .... etc) 

if($_GET['id'])
{
$code .="WHERE seccion='" $idseccion "' ";
}
else if(
$_GET['cat'])
{
$code .="AND categoria='" $idcategoria ."'";
}
// .... etc
$adasd=mysql_query("SELECT * FROM ContenidoSec " $code "");
// lalalalallala 
Lo quiero intentar es tratar de ahorrarme varias consultas.
Porque en la URL la redirecciono con el Nombre, pero en la base de datos esta guardado con el ID.

Probe con Join/ Inner Join y practicamente no logro como hacerlo

Thanks
__________________
Kame Kame AH
  #7 (permalink)  
Antiguo 23/10/2008, 06:10
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: Consulta Mysql

hola

$idseccion= $_GET['id']
  #8 (permalink)  
Antiguo 23/10/2008, 06:12
 
Fecha de Ingreso: septiembre-2003
Mensajes: 54
Antigüedad: 20 años, 7 meses
Puntos: 2
Respuesta: Consulta Mysql

Cita:
Iniciado por jaronu Ver Mensaje
hola

$idseccion= $_GET['id']
La URL queda
secciones.php?id=Programacion&cat=Webmaster&ccat=P HP&scat=Scripts

Por lo tanto no tiene el ID, el ID solo esta en la BD.
No sé como hacer una consulta en la cual haga que tome el ID en vez del nombre sin hacer tantas consultas anteriormente.
Si alguien me puede dar una idea de reestructurar la base datos, bienvenido sea :D
__________________
Kame Kame AH
  #9 (permalink)  
Antiguo 23/10/2008, 06:34
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: Consulta Mysql

Que yo sepa la unica manera de rescatar la ID de un BBDD es haciendo una consulta.

Haz una consulta a varias tablas a la vez para obtener todas las ID de una vez.
  #10 (permalink)  
Antiguo 23/10/2008, 09:10
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Consulta Mysql

No es necesario si usas INNER JOIN puedes hacerlo, por ejemplo:

Código sql:
Ver original
  1. SELECT a.id_articulo, a.articulo FROM articulos AS a INNER JOIN categorias AS c ON a.id_categoria=c.id_categoria WHERE c.categoria='carros'

Saludos.
  #11 (permalink)  
Antiguo 23/10/2008, 09:12
 
Fecha de Ingreso: septiembre-2003
Mensajes: 54
Antigüedad: 20 años, 7 meses
Puntos: 2
Respuesta: Consulta Mysql

Cita:
Iniciado por GatorV Ver Mensaje
No es necesario si usas INNER JOIN puedes hacerlo, por ejemplo:

Código sql:
Ver original
  1. SELECT a.id_articulo, a.articulo FROM articulos AS a INNER JOIN categorias AS c ON a.id_categoria=c.id_categoria WHERE c.categoria='carros'

Saludos.
Ahí me resulto, pero como puedo unir eso con +2 tablas? =s...
__________________
Kame Kame AH
  #12 (permalink)  
Antiguo 23/10/2008, 09:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Consulta Mysql

Agrega mas Inner Joins, te recomiendo que leas algún libro de SQL, te puede ayudar mucho a conocer todo el poderio del lenguaje SQL, tienes a tu disposición muchas herramientas, como LEFT JOIN, RIGHT JOIN, INNER JOIN, OUTER JOIN etc.

Estudia el lenguaje es lo mejor que puedes hacer y con eso podrás realizar mejor tus sistemas.

Saludos.
  #13 (permalink)  
Antiguo 23/10/2008, 14:28
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: Consulta Mysql

Hola

Pero al final eso que posteaste es una consulta ala BBDD??

para obtener las ID?, no?, O sigo sin entender, que es lo mas probable.

Muy buena tu respuesta, GatorV, tengo que leer mucho de MySQL, pero no deja de ser una consulta a la BBDD, para obtener las id.

Un saludo
  #14 (permalink)  
Antiguo 24/10/2008, 13:18
 
Fecha de Ingreso: septiembre-2003
Mensajes: 54
Antigüedad: 20 años, 7 meses
Puntos: 2
Respuesta: Consulta Mysql

Listo, lo logre, Grax GatorV

Use:
SELECT campos
FROM tabla1 INNER JOIN
(tabla2 INNER JOIN [( ]tabla3
[INNER JOIN [( ]tablax [INNER JOIN ...)]
ON tabla3.campo3 operadordecomparación tablax.campox)]
ON tabla2.campo2 operadordecomparación tabla3.campo3)
ON tabla1.campo1 operadordecomparación tabla2.campo2;
__________________
Kame Kame AH
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 06:20.