MySQL - Problemas con una Consulta SQL que tiene un ORDER BY

   
Vista:

Problemas con una Consulta SQL que tiene un ORDER BY

Publicado por Agustín Mendoza topoyo_azteka@hotmail.com (3 intervenciones) el 26/08/2014 06:07:34
Estoy trabajando con MySQL, y al hacer una consulta SQL como esta:

select * from alumno order by alumno.apellidopaterno

me muestra los registros contenidos en la tabla, pero si le agrego otro campo para ordenar:

select * from alumno order by alumno.apellidopaterno, alumno.apellidomaterno;

no me muestra ningún registro, y no entiendo por qué. A continuación muestro cómo está creada la tabla:

create table alumno
(
idalumno smallint(2) unsigned not null auto_increment,
nombres varchar(30) character set utf8 collate utf8_spanish_ci not null default '_',
apellidopaterno varchar(20) character set utf8 collate utf8_spanish_ci not null default '_',
apellidomaterno varchar(20) character set utf8 collate utf8_spanish_ci not null default '_',

... aquí van otros campos ( no los pongo para hacer más ágil el mensaje ) ...

primary key (idalumno),
key nombres (nombres),
key apellidopaterno (apellidopaterno),
key apellidomaterno (apellidomaterno)
) engine=myisam default charset=utf8;

Gracias de antemano por las respuestas.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Problemas con una Consulta SQL que tiene un ORDER BY

Publicado por xve (899 intervenciones) el 26/08/2014 10:46:17
Hola Agustín, la verdad es que lo tienes bien!!!

El order by, simplemente ordena, no discrimina... es decir, que siempre muestra los mismos resultados que si no estuviera el ORDER BY.

Yo he realizado esta prueba en una tabla que tengo de test, y me ha funcionado perfectamente!!!
1
SELECT * FROM `Table2` order by `Table2`.`idTable2`, `Table2`.`idTable1`;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas con una Consulta SQL que tiene un ORDER BY

Publicado por Agustín Mendoza (3 intervenciones) el 26/08/2014 15:50:55
Gracias por tu respuesta.

Haciendo unos cambios aquí y allá, me dí cuenta que el error se genera cuando uso una claúsula WHERE. En la descripción de la tabla, me falto mencionar un campo más:

grupo tinyint(1) unsigned not null default '0' y su llave, key grupo (grupo)

Es decir, la tabla quedaría así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
create table alumno
(
idalumno smallint(2) unsigned not null auto_increment,
nombres varchar(30) character set utf8 collate utf8_spanish_ci not null default '_',
apellidopaterno varchar(20) character set utf8 collate utf8_spanish_ci not null default '_',
apellidomaterno varchar(20) character set utf8 collate utf8_spanish_ci not null default '_',
grupo tinyint(1) unsigned not null default '0',
 
... aquí van otros campos ( no los pongo para hacer más ágil el mensaje ) ...
 
primary key (idalumno),
key nombres (nombres),
key apellidopaterno (apellidopaterno),
key apellidomaterno (apellidomaterno),
key grupo (grupo)
) engine=myisam default charset=utf8;

Y la tabla que está relacionada es ésta:

1
2
3
4
5
6
7
8
9
10
create table cat_grupo
	(
	idgrupo tinyint(1) unsigned not null auto_increment,
	grado tinyint(1) unsigned not null default '0',
 	grupo varchar(1) character set utf8 collate utf8_spanish_ci not null default '_',
	tutorgrupo tinyint(1) unsigned not null default '0',
	primary key (idgrupo)
 	key grado (grado),
	key grupo (grupo)
	) engine=myisam default charset=utf8;

Entiendo tu comentario: " ... El order by, simplemente ordena, no discrimina ... ", pero como te mencioné, se genera el error y no tengo la más remota idea por qué sucede eso. Es decir, me muestra los registros correctamente si tengo esto ( estoy trabajando con PHP y MySQL, y obviamente, la variable $IdGrupo se define anteriormente):

$SentenciaSQL="select alumno.idalumno, alumno.apellidopaterno, alumno.apellidomaterno, alumno.nombres from alumno where (alumno.grupo=".$IdGrupo.") order by alumno.apellidopaterno;";

Pero si agrego un campo más al ordenamiento, ya NO MUESTRA ningún registro:

$SentenciaSQL="select alumno.idalumno, alumno.apellidopaterno, alumno.apellidomaterno, alumno.nombres from alumno where (alumno.grupo=".$IdGrupo.") order by alumno.apellidopaterno, alumno.apellidomaterno;";

Y algo que me sorprendió, es ver que sí me regresaba registros si eliminaba la clausula WHERE, pero te imaginarás, no del grupo de alumnos con el que se supondría se deben de mostrar, sino de tooodos los alumnos:

$SentenciaSQL="select alumno.idalumno, alumno.apellidopaterno, alumno.apellidomaterno, alumno.nombres from alumno order by alumno.apellidopaterno, alumno.apellidomaterno, , alumno.nombres;";

La sentencia anterior funciona, pero me regresa todos los registros de la tabla alumnos.

Yo supongo que estoy haciendo las cosas correctamente, pero algo está mal y no sé cómo solucionarlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Problemas con una Consulta SQL que tiene un ORDER BY

Publicado por xve (899 intervenciones) el 26/08/2014 22:00:47
Hola Agustín, la verdad yo tampoco ser ver el problema...

Es decir, si esta consulta devuelve n registros:
$SentenciaSQL="select alumno.idalumno, alumno.apellidopaterno, alumno.apellidomaterno, alumno.nombres from alumno where (alumno.grupo=".$IdGrupo.") order by alumno.apellidopaterno;";

Esta tiene que devolver los mismos registros:
$SentenciaSQL="select alumno.idalumno, alumno.apellidopaterno, alumno.apellidomaterno, alumno.nombres from alumno where (alumno.grupo=".$IdGrupo.") order by alumno.apellidopaterno, alumno.apellidomaterno;";

Lo único que cambia es que añades un valor mas al order by...

La verdad, es que no te se decir porque no te funciona¿?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas con una Consulta SQL que tiene un ORDER BY

Publicado por Agustín Mendoza topoyo_azteka@hotmail.com (3 intervenciones) el 27/08/2014 05:57:57
Gracias por tu apoyo.

Pues como te podrás dar cuenta, hay algo que no estoy haciendo bien. Le seguiré buscando cuál es el problema, pero de todos modos te agradezco el tiempo que tomaste en ver los mensajes. Gracias nuevamente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar