Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

No se como hacer esta SELECT

Estas en el tema de No se como hacer esta SELECT en el foro de Bases de Datos General en Foros del Web. Hola muy buenas!os escribo para ver si alguien me puede ayudar... . Se trata de una SELECT que seguramente para muchos de vosotros sera facilísima..pero ...
  #1 (permalink)  
Antiguo 17/05/2007, 14:46
Avatar de txusta77  
Fecha de Ingreso: junio-2006
Mensajes: 34
Antigüedad: 18 años
Puntos: 0
No se como hacer esta SELECT

Hola muy buenas!os escribo para ver si alguien me puede ayudar... . Se trata de una SELECT que seguramente para muchos de vosotros sera facilísima..pero a mi no me sale. Tengo una base de datos en mysql llamada TRADUCTORES. En ella tengo una tabla y dentro varios campos, pero voy a mencionar por ejemplo 6.

1- Idioma1
2-Idioma2
3-Idioma3
2- Traductor
3- Interprete
4- Autonomo

La tabla idiomas contiene 20 idiomas diferentes. Y las otras tres tablas, aunque sean varchar, he puesto unos combobox para elegir entre SI y NO.

Quiero hacer un formulario en el que salgan 4 combos. En uno saldra la lista de idiomas, y en los otros los SI o NO. Después tengo un botón.Quiero que cuando pulse el botón, si por ejemplo tengo elegido el idioma castellano, y los demás combos esten vacios, me muestre los que en alguno de los 3 idiomas, ponga castellano. A su vez, en el caso de que estuvieran elegidos los de castellano y los que son autonomos, poniendo SI en autonomo, cambie el resultado. Vamos, una select que pueda hacer busquedas tanto individuales como con varias opciones. Ahora mismo la select que tengo es esta:
$idioma=$_POST['idioma'];
$traductor=$_POST['traductor'];
$Interprete=$_POST['interprete'];
$autonomo=$_POST['autonomo'];


Select * from Datos where Idioma1='$idioma' or Idioma2='$idioma' or Idioma3='$idioma' and Traductor='$traductor' and Interprete='$interprete' and Autonomo='$autonomo';

Muchas gracias.
  #2 (permalink)  
Antiguo 18/05/2007, 01:54
 
Fecha de Ingreso: octubre-2003
Mensajes: 33
Antigüedad: 20 años, 7 meses
Puntos: 0
Re: No se como hacer esta SELECT

Por lo pronto, intenta separar las condiciones del where, porque realmente tienes dos principales: por un lado, los idiomas, que sea cualquiera de ellos, y por otro lado, las demás, que han de darse todas obligatoriamente. Yo para comparar campos de texto suelo usar la cláusula LIKE, pero = ha de funcionar. Prueba así:

Código PHP:
$sql 'SELECT * FROM Datos WHERE ((Idioma1 LIKE \'' .$idioma'\') OR (Idioma2 LIKE \'' .$idioma'\') OR (Idioma3 LIKE \'' .$idioma'\')) AND ((Traductor LIKE \'' .$traductor'\') AND (Interprete LIKE \'' .$interprete'\') AND (Autonomo LIKE \'' .$autonomo'\'))'
Otra cosa importante son los combos; ten en cuenta que lo que se pasa por POST/GET es el value del <option> y ese valor debe estar en la base de datos en el campo correspondiente. Me explico; dices que muestras Sí/No, pero, ¿es también Sí/No los valores que envía? Prueba a tener en la base de datos 0/1 y ese es el valor que comparas:

Código HTML:
<select name="traductor">
 <option value="0">No</option>
 <option value="1"></option>
</select> 
Ten cuidado con las comillas y comillas simples, ya que con cada una hay que "escapar" distintos caracteres; hacer un "echo" de la consulta para ver si es correcta puede serte útil. Echa un ojo y nos cuentas ;)
  #3 (permalink)  
Antiguo 18/05/2007, 02:35
Avatar de txusta77  
Fecha de Ingreso: junio-2006
Mensajes: 34
Antigüedad: 18 años
Puntos: 0
Re: No se como hacer esta SELECT

He puesto lo siguiente:

$result = "(SELECT * FROM Datos WHERE ((Idioma1 LIKE \'' .$idioma. '\') OR (Idioma2 LIKE \'' .$idioma. '\') OR (Idioma3 LIKE \'' .$idioma. '\')) AND ((Traductor LIKE \'' .$traductor. '\') AND (Interprete LIKE \'' .$interprete. '\')))";

He quitado lo de autonomo al final. Después tengo:


if ($row = mysql_fetch_array($result)){
echo "<table border = '1'> \n";
//Mostramos los nombres de las tablas
echo "<tr> \n";
while ($field = mysql_fetch_field($result)){
echo "<td>$field->Nombre</td> \n";
}
echo "</tr> \n";
do {
echo "<tr> \n";
echo "<td>".$row["ID"]."</td> \n";
echo "<td>".$row["Nombre"]."</td> \n";
echo "<td>".$row["Apellidos"]."</td> \n";
echo "<td>".$row["Telefono"]."</td> \n";
echo "<td><a href='mailto:".$row["Email"]."'>".$row["Email"]."</a></td> \n";
echo "</tr> \n";
} while ($row = mysql_fetch_array($result));
echo "</table> \n";
} else {
echo "¡ No se ha encontrado ningún registro !";
}
?>

Y cuando ejecuto me da el siguiente error:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/DATU_BASEAK/Elebi_ITZULTZAILEAK/bilaketaosoa.php on line 22
¡ No se ha encontrado ningún registro !
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 01:02.