AYUDA CON QUERY - TABLAS RELACIONADAS

#1
Hola buen día.

Tengo la siguiente query:
PHP:
$id = getParam($_GET["id"],"");
$total = 0;
if ($id != "") {
	$slike = sqlValue ($id."%", "text");
	$query = "SELECT * FROM alumno, tutor WHERE id like ".$slike." ORDER BY id ASC";
	$quEmp = mysql_query($query, $con);
	$total = mysql_num_rows($quEmp);
}
Hago un SELECT tecleando el id del alumno (PK) para mostrar en una tabla el resultado. El problema es que me muestra todos los datos de la tabla tutor cuando solo deberia mostrarme a el tutor que está relacionado con el id del alumno que he tecleado.

Mis tablas son las siguientes:

PHP:
CREATE TABLE alumno (
 id VARCHAR (11) NOT NULL,
 nomAlumno VARCHAR (25) NOT NULL,
 apPatAlumno VARCHAR (25) NOT NULL,
 apMatAlumno VARCHAR (25) NOT NULL,
grado INT (1) NOT NULL,
grupo VARCHAR (1) NOT NULL,
taller VARCHAR (25) NOT NULL,
edad INT (2) NOT NULL,
sexo VARCHAR (1) NOT NULL,
email VARCHAR (50) NOT NULL,
 PRIMARY KEY (id)
) ENGINE=INNODB;
PHP:
CREATE TABLE tutor (
alumno_id VARCHAR (11) NOT NULL,
 nomTutor VARCHAR (25) NOT NULL,
 apPatTutor VARCHAR (25) NOT NULL,
 apMatTutor VARCHAR (25) NOT NULL,
 direccion VARCHAR (160) NOT NULL,
 telMovil INT (10) NOT NULL,
 telCasa INT (7) NOT NULL,
 INDEX (alumno_id),
 FOREIGN KEY (alumno_id)
  REFERENCES alumno (id)
  ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=INNODB;
Alguna sugerencia?

P.D. Por qué en la base de datos en la columna telMovil me aparece ejemplo: "2147483647" cuando debería de ser "9932456789" (este num lo ingreso desde un formulario)? Me aparece el mismo numero ("2147483647") en todos mis registros.

GRACIAS!!!
 
#2
que tal si pruebas

$query = "SELECT alumno.*, tutor.* FROM alumno LEFT JOIN tutor ON alumno.id=tutor.alumno_id WHERE id =".$slike." ORDER BY id ASC";
 
#4
Si tu consulta es mediante el PK de la tabla, no es necesario usar LIKE, en su lugar usa ....
$query="SELECT*FROMalumno,tutorWHEREid=".$idtecleado"ORDERBYidASC";

Saludos
 
#5
Hola mramirezc84! Muchas gracias! Mi query quedó de la siguiente manera y funciona bien :)

$query = "SELECT alumno.*, tutor.* FROM alumno LEFT JOIN tutor ON alumno.id=tutor.alumno_id WHERE id like ".$slike." ORDER BY id ASC";
 
#6
te aparece el numero que mencionas en el campo telMovil porque estas ingresando un numero mayor a lo permitido al tipo de dato int, en tu lugar usaria tipo varchar con longitud 10 para dicho campo

seria bueno le des un vistazo a los limites de tipos de datos en mysql
 
#7
ahmm es que estas utilizando un cross join al poner tu tabla1 , tabla2

intenta con un inner join
$query = "SELECT * FROM alumno inner join tutor on alumno.id=tutor.id
WHERE id like ".$slike." ORDER BY id ASC";

Saludos!
 

shoki666

Bovino de alcurnia
#8
canal he analizado tu codigo pero no se como esten tus datos sin embargo te proporciono el siguiente query pruebalo y me dices por mp o aqui que tal te funciono


SELECT DISTINCT a.*, t.*
FROM alumno a
INNER join tutor t
ON a.id = '.$slike.'
GROUP BY a.id
order by a.id asc
 
Arriba