Tema: Error en SQL
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/03/2009, 12:25
Avatar de rafaconpu
rafaconpu
 
Fecha de Ingreso: febrero-2006
Mensajes: 331
Antigüedad: 18 años, 2 meses
Puntos: 3
Error en SQL

Buenas tardes,

Tengo la siguiente SQL y no consigo que funcione ¿Qué puede estar mal?

Código PHP:
$sql "SELECT t_facultad.*, t_facultad_x_departamento.*, t_departamentos_facultad.* 
FROM t_facultad_x_departamento 
INNER JOIN t_departamentos_facultad ON 
t_facultad_x_departamento.iddpto = t_departamentos_facultad.iddpto 
WHERE t_facultad.idfacultad ="
.$_GET["tFa"];

$rsDepartamento mysql_query($sql);
$numdpt mysql_num_rows($rsDepartamento);

for (
$i=0$i<$numdpt ;$i++){
   
$id[$i] = mysql_result($rsDepartamento,$i,0); 
   
$descrip[$i] = mysql_result($rsDepartamento,$i,3);
   if (
$_GET['tDpt'] == $id[$i]){
       echo 
"<option value=\"".$id[$i]."\" selected>".$descrip[$i]."</option>";
   }else{
       echo 
"<option value=\"".$id[$i]."\">".$descrip[$i]."</option><br>";
   }

Sin embargo con este otro código que tengo funciona correctamente:

Código PHP:
if (($_GET["tFa"]!="") or ($_GET["tFa"]!="S")){
   
$sql "SELECT t_facultad_x_departamento.*, t_departamentos_facultad.* 
   FROM t_facultad_x_departamento 
   INNER JOIN t_departamentos_facultad ON 
   t_facultad_x_departamento.iddpto = t_departamentos_facultad.iddpto"
;

   
$rsDepartamento mysql_query($sql);
   
$numdpt mysql_num_rows($rsDepartamento);
   
//Funciona. Carga todos los valores que corresponden con la    tabla "t_facultad_x_departamento"

   
for ($i=0$i<$numdpt ;$i++){
      if (
mysql_result($rsDepartamento$i0) == $_GET["tFa"]){
         
$id[$i] = mysql_result($rsDepartamento,$i,0); 
         
$descrip[$i] = mysql_result($rsDepartamento,$i,3);
         if (
$_GET['tDpt'] == $id[$i]){
            echo 
"<option value=\"".$id[$i]."\" selected>".$descrip[$i]."</option>";
         }else{
            echo 
"<option value=\"".$id[$i]."\">".$descrip[$i]."</option><br>";
         }
      }
   }        
//fin if $_GET["tFa"] 
La diferencia entre un código y otro está en que en el primero pongo la condición WHERE (que no me funciona y no se porqué puede ser) y en el segundo código no tengo la condición WHERE pero en cambio, dentro del bucle for voy comprobando si el registro coincide con el valor correspondiente, entonces lo agrego al select.

Este segundo método no creo que sea el más apropiado porque:

1. Obtengo todos los registros de una tabla de los cuales solo voy a cargar unos cuantos en el select (y lo voy filtrando en el segundo método)

2. La opción más automatizada o más rápida creo que sería la primera, que en la SQL ya obtenga solo los valores que voy a cargar y con el bucle for los cargue directamente en el select. (Pero esta es la que no consigo que me funcione)

¿Alguna idea o sugerencia del problema que puede ser?

Un saludo.