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

Join Dos tablas un campo obligatorio otro no

Estas en el tema de Join Dos tablas un campo obligatorio otro no en el foro de Mysql en Foros del Web. Hola tengo dos tablas una se llama noticias Código PHP: Noticias_tabla :  idnoticia ,  id_imagen ,  noticia ,  publicada  la otra Código PHP: Noticias_imagenes_tabla :  ...
  #1 (permalink)  
Antiguo 24/09/2012, 15:54
Avatar de Julioarhernandez  
Fecha de Ingreso: enero-2007
Mensajes: 84
Antigüedad: 17 años, 3 meses
Puntos: 0
Exclamación Join Dos tablas un campo obligatorio otro no

Hola tengo dos tablas una se llama noticias

Código PHP:
Noticias_tablaidnoticiaid_imagennoticiapublicada 
la otra
Código PHP:
Noticias_imagenes_tablaidimagennoticia_idimagensrcactivaportada 
Son noticias las que quiero mostrar con su respectiva imagen de portada si la tiene en la portada y otra consulta es para mostrar la noticia con su respectiva imagen de activa.. si no tiene imagen tambien quiero que se muestre la noticia... solo hay una imagen de portada y una de activa o puede que no tenga imagen...solo quiero seleccionar una sola fila

la consulta que hago es la siguiente

Código PHP:
SELECT *,COUNT(noticias_tabla.idnoticia), FROM noticias_tabla LEFT JOIN noticias_imagenes_tabla ON noticias_imagenes_tabla.noticia_id=noticias_tabla.idnoticia WHERE publicada=AND portada=1 GROUP BY noticias_tabla.idnoticia HAVING COUNT(noticias_tabla.idnoticia)>
Pero cuando no tiene imagen la noticia o cuando no esta portada en uno no me muestra ninguna columna...
  #2 (permalink)  
Antiguo 25/09/2012, 00:38
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Join Dos tablas un campo obligatorio otro no

Esta consulta con los filtros publicada = 1 y portada = 1 contradice el uso de LEFT JOIN. Si LEFT JOIN te selecciona todas las valores de los campos de la tabla noticias_tabla, el filtro por publicada = 1, deja sólo aquellos que tienen ese valor en ese campo en la tabla noticias_tabla; por otra parte, el añadido portada=1 hace que solo los registros que tienen en la tabla noticias_imagenes_tabla con un valor 1 el campo portada se seleccionen. Con ello ya eliminas el efecto de LEFT JOIN pues todos los registros de la tabla noticias_tabla que no tienen imagen en noticias_imagenes_tabla por fuerza tendrán NULL como valor de ese campo portada = 1. Por tanto te quedarán solo los registros de la tabla noticias_tabla y publicada 1 que además tengan una imagen relacionada con portada y no el valor 1. Todo lo demás no lo verás. Otra complicación, tal y como lo tienes, es el COUNT id_noticias agrupando por id_noticia y con HAVING > 0, algo que para mí no tiene sentido. El id_noticia es uno, si agrupas por él y siempre aparece uno y no más, cuando buscas > o te saldrán todos lo que te filtra la consulta. Acláranos mejor lo que quieres pues pareces querer tres cosas a la vez: 1) eso que te he dicho; 2) todas las noticias; 3) el total de no sé si una y otra.

Última edición por jurena; 25/09/2012 a las 00:54

Etiquetas: join, obligatorio, select, tabla, tablas, campos
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 21:32.