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

Consultas de dos tablas

Estas en el tema de Consultas de dos tablas en el foro de Mysql en Foros del Web. Hola! FELIZ AÑO A TODOS !!! Espero que hayais entrado con muy buen pie este año! Yo hoy he ido a correr 5 km, supongo ...
  #1 (permalink)  
Antiguo 01/01/2016, 15:12
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Consultas de dos tablas

Hola!

FELIZ AÑO A TODOS !!!

Espero que hayais entrado con muy buen pie este año!
Yo hoy he ido a correr 5 km, supongo que ya hasta el 1 de enero de 2017 no iré de nuevo

Bueno os escribo porque con la emocion de mejorar que casi todos tenemos a inicio de año, he empezado a renovar mi web para mejorarla, y como hace ya un año que di en la uni, bases de datos, se me ha olvidado bastante demasiado.....

El problema es el siguiente:
Tengo dos tablas. Una tabla llamada articulos, con los campos: titulo, contenido, categoría, fecha_publicacion y otra tabla llamada categorias con los campos id, categoria_padre y nombre_categoria.

Un articulo puede tener una categoria que sea hija de otra categoria superior, por ejemplo, el articulo titulado "como correr en invierno" tendría la categoría "running" que sería categoria hija de la categoria "deporte"

Ahora lo que necesito en el home de mi web es sacar una seccion en la que aparezcan los ultimos 5 articulos de deportes, independientemente de la categoría hija que tengan. Es decir, en el home tiene que aparecer los articulos de running, los articulos de ciclismo, los de esqui... y todos que tengan la categoria padre "deportes"

Llevo un rato intentando y no lo consigo....
He intentado hacer:
Código MySQL:
Ver original
  1. SELECT la.id, la.title, la.created_time, la.content, la.category_id, lc.parent_category_id, lc.id
  2. FROM lore_articles la, lore_categories lc
  3. WHERE   la.published=1 AND
  4. lc.parent_category_id=4 //El 4 es el ide de la categoria deporte

Pero el resultado que obtengo es el siguiente:

REGISTRO 1

Cita:
El cantante Fulano canta mal //titulo del ultimo articulo publicado
12enero2015 // Fecha de publicacion
contenidoarticulo //Contenido del articulo
114 //id categoria de ese articulo que NO es de deportes sino de espectaculos
4 // id de categoria de deportes
74 //id de categoria de running

REGISTRO 2

Cita:
El cantante Fulano canta mal //titulo del ultimo articulo publicado
12enero2015 // Fecha de publicacion
contenidoarticulo //Contenido del articulo
114 //id categoria de ese articulo que NO es de deportes sino de espectaculos
4 // id de categoria de deportes
23 //id de categoria de ciclismo
REGISTRO 3

Cita:
El cantante Fulano canta mal //titulo del ultimo articulo publicado
12enero2015 // Fecha de publicacion
contenidoarticulo //Contenido del articulo
114 //id categoria de ese articulo que NO es de deportes sino de espectaculos
4 // id de categoria de deportes
94 //id de categoria de ski
El caso es que me sale el titulo, contenido y fecha de publicacion del ultimo articulo publicado independientemente de que categoria pertenezca repetido por 3 sin embargo la categoria padre y la categoria de la tabla categorias parece que si me sale bien...

Porque me sale asi??

Saludos a todos!!!
__________________
Tecnología y tutoriales

Última edición por gnzsoloyo; 01/01/2016 a las 19:46
  #2 (permalink)  
Antiguo 01/01/2016, 19:53
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consultas de dos tablas

Cita:
Porque me sale asi??
Porque estás relacionando mal las tablas. No estás indicando exactamente cómo es el vinculo entre ambas, es decir igualando los campos que las relacionan. En ese contexto, en un JOIN implícito, MySQL intenta relacionar campos que tengan el mismo nombre, lo que tiende a generar JOIN erróneos, o incluso productos cartesianos, que es peor.
En tu caso, como la PK de ambos se denomina "ID", y no estás indicando ninguna relación, intenta hacer el join entre el ID de los artículos con los ID de las categorías, algo obviamente absurdo.
Empecemos con esta prueba:
Código MySQL:
Ver original
  1.   la.id,
  2.   la.title,
  3.   la.created_time,
  4.   la.content,
  5.   la.category_id,
  6.   lc.parent_category_id,
  7.   lc.id
  8.   lore_articles la,  INNER JOIN re_categories lc ON la.category_id = lc.id
  9. WHERE  
  10.   la.published=1
  11.   AND lc.parent_category_id=4
  12. ORDER BY la.id DESC
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 02/01/2016, 07:45
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Consultas de dos tablas

Pues si funciona gnzsoloyo!
Muchas gracias por la ayuda y sobre todo por la explicacion!
__________________
Tecnología y tutoriales

Etiquetas: campo, fecha, registro, select, tabla, tablas
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 19:26.