Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] ¿Me ayudan con una consulta SQL por favor?

Estas en el tema de ¿Me ayudan con una consulta SQL por favor? en el foro de Mysql en Foros del Web. Hola, de antemano gracias, estoy intentando hacer una consulta optima que involucar dos tablas, se los cuento de amanera simple Tabla categorias Cita: id | ...
  #1 (permalink)  
Antiguo 19/01/2013, 12:00
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años, 7 meses
Puntos: 24
¿Me ayudan con una consulta SQL por favor?

Hola, de antemano gracias, estoy intentando hacer una consulta optima que involucar dos tablas, se los cuento de amanera simple

Tabla categorias
Cita:
id | categoria_padre | nombre
1 | 0 | Papa Juan
2 | 0 | Papa Luis
3 | 1 | Carlos Hijo de juan
4 | 1 | Pepe Hijo de juan
Contenidos
Cita:
id | Nombre
1 | Contenido 1
2 | Conteniodo 2
3 | Contenido 3
Relacion contenidos_categorias
Cita:
id_contenido | id_categoria
1 | 4
2 | 3
3 | 1

Lo que yo quiero lograr es Sacar todos los contenidos que pertenezca a juan y a sus hijos , en este caso serían lso contenido 1, 2, 3

Me pueden ayudar por favor?
__________________
SEO en Medellin
  #2 (permalink)  
Antiguo 20/01/2013, 06:27
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: ¿Me ayudan con una consulta SQL por favor?

mafima,
si buscas la categoria 1, es decir los hijos de 1 y el padre 1, tienes que hacer algo así:
Código MySQL:
Ver original
  1. SELECT c.nombre, t1.nombre
  2.  FROM contenidos_categorias cc INNER JOIN
  3.  (SELECT id, nombre, categoria_padre FROM `categorias`
  4.  WHERE categoria_padre = 1 OR id = 1)t1
  5.  ON cc.id_categoria = t1.id
  6.  INNER JOIN contenidos c ON cc.id_contenido = c.id
  7.  ORDER BY t1.categoria_padre, t1.nombre
  #3 (permalink)  
Antiguo 20/01/2013, 16:40
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años, 7 meses
Puntos: 24
Respuesta: ¿Me ayudan con una consulta SQL por favor?

Jurena, eres un genio, funcionó a la perfección.
Me gustaría si no es mucha molestia entender la consulta.

Arrancamos desde la tabla que relaciona las categorias con los contenidos, esto para mis es claro porque tengo que saber en primer lugar cuales son los HIJOS de la categoria.

Realmente lo que me enreda y que estoy seguro es el exito de la consulta es la SOBCONSULTA en el inner join
Código:
(SELECT id, nombre, categoria_padre FROM `categorias`
 WHERE categoria_padre = 1 OR id = 1)t1
Que significa esa subconsulta? pensaba que en los INNER JOIN solo podía poner el nombre de una tabla.

De nuevo Mil gracias!!
__________________
SEO en Medellin
  #4 (permalink)  
Antiguo 21/01/2013, 01:13
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: ¿Me ayudan con una consulta SQL por favor?

Se trata de una subconsulta que necesita su alias (t1, en este caso) para poder relacionar el resultado de esta subconsulta con las otras tablas. Esa subconsulta te permite traerte el id del padre y de sus hijos. Eso es lo primero que armé, pues quería antes que nada eso. Puedes usar subconsultas como si de una tabla se tratara siempre que añadas un alias. Sobre subconsultas puedes ver en el manual http://dev.mysql.com/doc/refman/5.0/es/subqueries.html
Para empezar a hacer prácticas con ellas, mira aquí:
http://www.aulaclic.es/sql/t_5_1.htm
De todas formas lo que tú tienes es una tabla jerárquica, y me refiero a la de categorias. Deberías leer algo sobre las consultas de MySQL a tablas jeráquicas mediante autojoin y otras cuestiones, pues tarde o temprano lo necesitarás. Empieza por aquí (hay muchas más):
http://mikehillyer.com/articles/mana...data-in-mysql/

Última edición por jurena; 21/01/2013 a las 01:42
  #5 (permalink)  
Antiguo 08/02/2013, 12:55
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años, 7 meses
Puntos: 24
Respuesta: ¿Me ayudan con una consulta SQL por favor?

He venido tarde a revisar, pero me ha quedado todo muy claro. Te lo agradezco mucho, ahora entiendo mucho más y seguiré leyendo.

Saludos,
__________________
SEO en Medellin

Etiquetas: 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 13:53.