Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/07/2012, 05:32
Hekaly
 
Fecha de Ingreso: enero-2010
Mensajes: 30
Antigüedad: 14 años, 3 meses
Puntos: 0
Duda para mostrar ciertas consultas

Buenas a todos.

Tengo una duda sobre mostrar las consultas durante bastante tiempo y no se como solucionarlo.

Resulta que en mi web hay un archivo php que genera las fichas de los juegos, esto lo hace haciendo una consulta a la base de datos.

Os pongo la consulta (kilometrica).

Código PHP:
SELECT plataformas.nombre,nombreJuego,nombreOriginal,nombreAlternativos,
juegos.fechaSalida,nombreDistribuidor,nombreDesarrollador,region.region,
nombreGenero,numSerie,numRom,numJugadores,resumenJuego,
soporteFisico.nombre,numAlmacenamiento,caratula,contraportada,imagenInicio,
imagenFinal,fotografias,disponibleEn,codigoBarras,versionFirmware,
numActualizaciones,numTrofeos,perifericos FROM plataformas,juegos,
distribuidor,desarrollador,region,genero,soporteFisico WHERE 
juegos
.idPlataforma=plataformas.idPlataforma AND 
juegos.desarrollador=desarrollador.iddesarrollador AND 
juegos.region=region.idregion AND juegos.distribuidor=distribuidor.iddistribuidor 
AND juegos.generos=genero.idgenero AND 
juegos.soporteFisico=soportefisico.idSoporteFisico AND idJuego='$id'
NOTA: Todo es una unica linea.

Esa consulta funciona perfectamente en caso de tener todos los campos llenos.

Ahora bien, como vereis a simple vista esa consulta es muuy larga por lo que pense en hacerla en partes, una parte para los campos obligatorios, otra para los idiomas, voces.....

El problema viene cuando tengo un juego que no tiente datos en el campo de alguna relacion, osea en nombreDistribuidor, generos, etc me sale el error y no muestra nada y mirando con workbench solo me muestra si hay algo en todos los campos que relaciono.

Probe hacerlo tambien con INNER JOIN pero igual si hay un campo relacionado que no tiene datos la consulta me da error.

Entonces mi pregunta es, como puedo solucionarlo, porque hay juegos que a lo mejor el nombre del Distribuidor no se sabe, o que algun campo no exista para ese juego (ej: las clasificaciones (pegi, esrb, etc) no existian en las años 70 cuando si habian juegos) y como la ficha se hacen para todos los jugos deberia haber alguna solucion que a mi se me escapa.

Y en cuanto a lo que he dicho antes que al tener una consulta muy larga la he fracmentado, me queda lo siguiente en el archivo php.

Código PHP:
/* Campos especificos */

$especificos "SELECT numRom,versionFirmware,numActualizaciones,numTrofeos,iconoJuego FROM juegos WHERE idJuego='$id';";
$resultadoEspecificomysql_query($especificos) or die(mysql_error());
if(
mysql_num_rows($resultadoEspecifico)==0) die("No hay registros para mostrar");
$arrayEspecifico mysql_fetch_array($resultadoEspecifico);


//Para sacar la galeria

$registroArray="SELECT fotografias FROM juegos WHERE idJuego='$id';";
$registroArrayConsulta=mysql_query($registroArray);
$cadena=mysql_result($registroArrayConsulta0);
$miArray=explode(',',$cadena);
$numComas=substr_count($cadena',');

// Para sacar las fotos 

$discosArray="SELECT imagenesMedia FROM juegos WHERE idJuego='$id';";
$discosArrayConsulta=mysql_query($discosArray);
$cadenaDiscos=mysql_result($discosArrayConsulta0);
$arrayDiscos=explode(',',$cadenaDiscos);
$numComasDiscos=substr_count($cadenaDiscos',');

// Para sacar los idiomas 

$idiomasArray="SELECT idiomas FROM juegos WHERE idJuego='$id';";
$idiomasArrayConsulta=mysql_query($idiomasArray);
$cadenaIdiomas=mysql_result($idiomasArrayConsulta0);
$arrayIdiomas=explode(',',$cadenaIdiomas);
$numComasIdiomas=substr_count($cadenaIdiomas',');

// Para sacar las voces 

$vocesArray="SELECT voces FROM juegos WHERE idJuego='$id';";
$vocesArrayConsulta=mysql_query($vocesArray);
$cadenaVoces=mysql_result($vocesArrayConsulta0);
$arrayVoces=explode(',',$cadenaVoces);
$numComasVoces=substr_count($cadenaVoces',');

$nombreOriginal=$arrayConsulta['nombreOriginal']; 
Dejando de lado la cadena con los campos obligatorios (que no me funciona) como veis en realidad son distintas consultas pero todas las demas linas son las mismas salvo cambiando el nombre de variable. Hay alguna forma de depurar esto, tipo alguna funcion donde mandes la consulta pero genere variables distintas para ser usadas??

Muchas gracias.