Comunidad de diseño web y desarrollo en internet online

select dentro de otra select

Citar            
MensajeEscrito el 30 Nov 2009 03:23 pm
Hola a todos.
No se si mi consulta va bien en este foro... disculpad si no es el caso.
Tengo una tabla de figuras y otra de premios. Hago una primera select para ver todas las figuras de la primera tabla y después una segunda select para er què figuras de esta primera select tienen premio y cuantos premios:

Código PHP :

$query =  "SELECT figuras.data, figuras.nom, figuras.era, figuras.idpremio ";
$query .= "FROM figuras WHERE figuras.era = 1 ";
$result = mysql_query ($query,$iMySQLLink) or DBG ("error a la consulta",$ERROR);
while ($row = mysql_fetch_assoc ($result))
{
                echo "<figura nom=\"".utf8_encode($row['nom']);
                echo "\" era=\"".utf8_encode($row['era']);
                echo "\" idpremio=\"".utf8_encode($row['idpremio']);
                echo "\">\n";

                echo "<premios>" ;
                $query2 =  "SELECT premios.lloc, premios.categoria, premios.medalla, premios.idpremio, figuras.idpremio ";
                $query2 .= "FROM premios, figuras WHERE (premios.idpremio = figuras.idpremio) ";
                $result2 = mysql_query ($query2,$iMySQLLink) or DBG ("error a la consulta",$ERROR);
                while ($row = mysql_fetch_assoc ($result2))
                {
                               echo "<premi med=\"".utf8_encode($row['medalla']);
                               echo "\" cat=\"".utf8_encode($row['categoria']);
                               echo "\" lloc=\"".utf8_encode($row['lloc']);
                               echo "\" nom=\"".utf8_encode($row['idpremio']);
                               echo "\"></premi>";
                }
                echo "</premios>\n";
                echo "</figura>";
}


El caso es que me responde con todos los premios de la tabla de premios y no con los premios de cada una de las figuras. Es cabreante porque el campo "idpremio" tanto de la tabla "figuras" como de la tabla "premios" me da el mismo valor (para comprobar que realmente me da el valor correcto), pero ya digo que en el while de premios, no sólo me da el premio de la figura concreta sino todos los otros premios que tengo en la tabla "premios".

Gracias por vuestra ayuda.

Por oriol

1 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 30 Nov 2009 09:28 pm
En el segundo SELECT agrega "AND figuras.era = 1" a la cláusula WHERE, así limitas a solo los registros que coincidan con el primer SELECT.

Pero me parece que puedes hacerlo todo en un solo SELECT. Tendría que probarlo.

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.