Ver Mensaje Individual
  #3 (permalink)  
Antiguo 03/01/2015, 15:45
eduuh17
 
Fecha de Ingreso: octubre-2014
Mensajes: 70
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Problema al listar tabla relacionadas

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Los mensajes de PHP no son tema de este foro. Solo trataremos aqui con lo referido a SQL. Esos mensajes solo nos dicen que no estás obteniendo resultados, es decir que la consulta no dispara errores pero devuelve un resultado vacío.
Por lo pronto hay que tener en cuenta que para que la consulta que haces devuelva algo, todas las condiciones que pones en el WHERE deben obligatoriamente cumplirse con al menos un registro al mismo tiempo... ¿Eso lo verificaste manualmente?

Lo primero que deberías hacer es verificar primero si realmente tienes datos que cumplan la condición básica, la que relaciona las tablas, y es mejor no hacerlo con JOIN implícitos, sino explicitos:
Código MySQL:
Ver original
  1.     V.idvideo,
  2.     V.nombre,
  3.     V.link,
  4.     V.sinopsis,
  5.     V.fecha,
  6.     V.direccion,
  7.     G.idvideo,
  8.     G.idgenero
  9.     video V INNER JOIN gen_video G ON V.idvideo = G.idvideo
Si esa consulta devuelve al menos un registro, está bien escrita y hay datos. Si hay más de un registro en cada tabla.. entonces tienes datos sucios en alguna parte, porque debería devolver al menos un registro de Video por cada Genero con el que se relacione.

Ahora bien, si todo anda bien, pero las condiciones son opcionales, es decir, no todas pueden estar siendo cargadas o algunas sólo se cumplen en unos registros y no en otros, esa consulta no te devolverá esos registros de cumplicmiento parcial.
¿Se enteinde?
En ese caso, cuando son opcionales, corresponde usar OR y no AND:
Código MySQL:
Ver original
  1.     V.idvideo,
  2.     V.nombre,
  3.     V.link,
  4.     V.sinopsis,
  5.     V.fecha,
  6.     V.direccion,
  7.     G.idvideo,
  8.     G.idgenero
  9.     video V INNER JOIN gen_video G ON V.idvideo = G.idvideo
  10.     V.nombre LIKE '%$nombre%'
  11.     OR V.link LIKE '%$link%'
  12.     OR V.sinopsis LIKE '%$sinopsis."%'
  13.     OR V.fecha LIKE '%$fecha%'
  14.     OR V.direccion LIKE '%$direccion%'
  15.     OR V.idgenero LIKE '%$generos%';
Estoy depurando un poco tu código para hacerlo mas legible. A nivel de PHP, es mejor transferir los parametros recibidos a variables, cosa de poder manejar un código mas limpio (tema off topic, pero que valía la pena aclarar).

Y antes de que preguntes: Esos "V" y "G", son alias dados a las tablas para facilitar la legibilidad del SQL. (ver http://dev.mysql.com/doc/refman/4.1/en/identifiers.html)
Hola, gracias por tu respuesta tan detallada y por tomar el tiempo de hacerla, El primer codigo que pusiste me devolvio todos los datos datos que tengo ingresado y bien, y ahora respecto a la 2da no lo entendi muy bien, con el or, es como si el dato estuviera vacio y no es necesario que este con datos, a eso te refieres?

Desde ya muchas gracias.

Saludos