Foros del Web » Programando para Internet » PHP »

Error en SQL

Estas en el tema de Error en SQL en el foro de PHP en Foros del Web. 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 =" . ...
  #1 (permalink)  
Antiguo 16/03/2009, 12:25
Avatar de 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.
  #2 (permalink)  
Antiguo 16/03/2009, 12:29
 
Fecha de Ingreso: agosto-2005
Mensajes: 14
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Error en SQL

Hola,

Yo probaría con la sentencia:

$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]' ";

A mi así me funcionan.
  #3 (permalink)  
Antiguo 16/03/2009, 13:00
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: Error en SQL

Te falta la relación de la tabla t_facultad
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 23:57.