Autor
|
Tema: Ayuda con Consulta. (Leído 34,773 veces)
|
royerphpmysql
Desconectado
Mensajes: 64
que rico tequila.
|
buenas tardes.
alguien me pudiera ayudar.
tengo una base de datos y 2 tablas
alumnos, kardex, y ambos se relacionan por matricula.
donde la tabla kardex lleva un codigo de materia y una calificacion.
realizo una consulta general y me esta arrojando varias veces la matricula y el nombre
anexo
Matricula Nombre Carrera Fecha de Calificacion Materia Calificacion 91901014429 ALMAZA MAURICIO TECNICOs 07/02/2010 M11 90 91901014429 ALMAZA MAURICIO TECNICOs 05/05/2010 M13 80 91901014429 ALMAZA MAURICIO TECNICOs 07/02/2010 M12 90 91901014429 ALMAZA MAURICIO TECNICOs 05/05/2010 M14 80
como le hago para que en la consulta no me repita la matricula y aparezcan los datos de materia y calificacion ?
saludos y muchas gracias en espera de su pronta respuesta
|
|
|
En línea
|
|
|
|
Skeletron
Desconectado
Mensajes: 1.731
A long way to go
|
Has lo siguiente: DESCRIBE alumnos; DESCRIBE kardex; SELECT * FROM alumnos LIMIT 1; SELECT * FROM kardex LIMIT 1;
Nos muestras exactamente todo lo que devolvió cada una de esas 4 consultas. (por separado)
Luego nos muestras la consulta que estas utilizando para mostrar datos.
PD.: Podrias agrupar datos, con GROUP BY, para que devuelva 1 valor por matricula.. Pero puede que no salga bien... Es mejor que nos muestres bien como es la base de datos, así podemos responderte
|
|
|
En línea
|
|
|
|
royerphpmysql
Desconectado
Mensajes: 64
que rico tequila.
|
mysql> DESCRIBE alumnos; +--------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | matricula | bigint(14) | NO | | NULL | | | nombres | varchar(50) | NO | | NULL | | | apellidos | varchar(50) | NO | | NULL | | | carrera | varchar(40) | NO | | NULL | | | fechaingreso | date | NO | | NULL | | | turno | varchar(20) | NO | | NULL | | | grupo | varchar(5) | NO | | NULL | | | salon | int(11) | NO | | NULL | | +--------------+-------------+------+-----+---------+----------------+ 9 rows in set (0.00 sec)
mysql> DESCRIBE kardex; +-------------------+---------------------+------+-----+---------+-------------- --+ | Field | Type | Null | Key | Default | Extra | +-------------------+---------------------+------+-----+---------+-------------- --+ | id | int(10) unsigned | NO | PRI | NULL | auto_incremen t | | matricula | bigint(14) unsigned | NO | | NULL | | | tetramestre | int(10) unsigned | NO | | NULL | | | materia | varchar(45) | NO | | NULL | | | codigomateria | varchar(10) | NO | | NULL | | | catedratico | varchar(80) | NO | | NULL | | | codigocatedratico | varchar(10) | NO | | NULL | | | calif1A | int(10) unsigned | NO | | NULL | | | fechacalif | varchar(10) | NO | | NULL | | | calif2A | int(10) unsigned | YES | | NULL | | | fechasegundaop | varchar(10) | YES | | NULL | | | califrevalidacion | int(10) unsigned | YES | | NULL | | | fechasegopesp | varchar(10) | YES | | NULL | | | califrecuperacion | int(10) unsigned | YES | | NULL | | | fechacalifrec | varchar(10) | YES | | NULL | | | califespecial | int(10) unsigned | YES | | NULL | | | fechacalifesp | varchar(10) | YES | | NULL | | +-------------------+---------------------+------+-----+---------+-------------- --+ 17 rows in set (0.00 sec)
la idea mia es que solo me muestre de la tabla alumnos la matricula y el nombre y de la tabla kardex el codigo de materia y la calificacion, la consulta yo la estoy realizando de la siguiente manera.
select * from alumnos, kardex where alumnos.matricula = kardex.matricula
pero este me arroja el resultado que pegue al prinicio osea todo.
espero me ayuden gracias.
|
|
|
En línea
|
|
|
|
Skeletron
Desconectado
Mensajes: 1.731
A long way to go
|
A ver... para mostrar solo matricula y nombre, debes hacer: SELECT alumnos.nombre, alumnos.matricula
Si quieres que tambien devuelva el Codigo de materia y calificacion, tienes que agregar: kardex.matricula, kardex.calificacion
o sea, que va quedando así: SELECT alumnos.nombre, alumnos.matricula, kardex.matricula, kardex.calificacion
Luego si quieres vincular las tablas mediante la matricula, entonces le agregas: WHERE alumnos.matricula = kardex.matricula
O sea que quedaría así: SELECT alumnos.nombre, alumnos.matricula, kardex.matricula, kardex.calificacion WHERE alumnos.matricula = kardex.matricula
Prueba eso, y dinos si hay problemas
|
|
|
En línea
|
|
|
|
royerphpmysql
Desconectado
Mensajes: 64
que rico tequila.
|
bueno creo qeu alomejor no me explique.. perdon.
como le hago para listar de la matricula xxxxxxxx todas las calificaciones distintas que este tenga en la tabla kardex? te anexo lo que vi con GROUP BY y con los query que me diste de ejemplo.
en el siguiente ejemplo yo llamo la matricula xxxxxxxxx pero no quiero que me despliege la matricula tantas veces solo quiero ver los codigos de materia que traen xxxxxxxx matricula con sus respectivas calificaciones, no se si se pueda en SQL o tenga que ser en codigo PHP ?
mysql> SELECT alumnos.nombres, kardex.matricula, kardex.codigomateria, kardex.calif1A FROM alumnos, kardex WHERE alumnos.matricula = kardex.matricula GROUP BY codigomateria; +------------------+-------------+---------------+---------+ | nombres | matricula | codigomateria | calif1A | +------------------+-------------+---------------+---------+ | ALMANZA MAURICIO | 91901014429 | M10 | 80 | | ALMANZA MAURICIO | 91901014429 | M11 | 90 | | ALMANZA MAURICIO | 91901014429 | M12 | 69 | +------------------+-------------+---------------+---------+ 3 rows in set (0.00 sec)
a mi me gustaria desplegarlo asi..
+------------------+-------------+---------------+---------+ | nombres | matricula | codigomateria | calif1A | +------------------+-------------+---------------+---------+ | ALMANZA MAURICIO | 91901014429 | M10 | 80 | | | M11 | 90 | | | M12 | 69 | +------------------+-------------+---------------+---------+
no se si me explique...
reciban muchos saludos y gracias por su valiosa ayuda.
|
|
|
En línea
|
|
|
|
^Tifa^
Desconectado
Mensajes: 2.804
|
+------------------+-------------+---------------+---------+ | nombres | matricula | codigomateria | calif1A | +------------------+-------------+---------------+---------+ | ALMANZA MAURICIO | 91901014429 | M10 | 80 | | | M11 | 90 | | | M12 | 69 | +------------------+-------------+---------------+---------+ Asi de antemano no lo puedes desplegar lamentablemente existe una relacion que quieres violar. El alumno Almanza Mauricio tiene 3 calificaciones, literalmente no puedes romper esa relacion y solo mostrar 1 solo campo y sus 3 relaciones o existe o no existe pero hay una relacion existente en la estructura. Y si matricula = xxxx dice que le pertenece a Mauricio y Mauricio tiene 10 calificaciones guardadas, retornaran las 10 calificaciones y todos los demas campos que lo acompanen. O es o no es, ahora mediante PHP si podrias filtrar y ordenar la data resultante y mostrar solo lo que tu quieres y como tu lo quieres...
|
|
|
En línea
|
|
|
|
Skeletron
Desconectado
Mensajes: 1.731
A long way to go
|
Podria solucionarce con un RIGHT JOIN...
|
|
|
En línea
|
|
|
|
royerphpmysql
Desconectado
Mensajes: 64
que rico tequila.
|
TIFA, Skelektron muchas gracias por su apoyo, probare con ambas modalidades que me recomiendan lo revisare mientras ire por cigarros y che e a la tienda para seguir trabajando agusto con ustedes... saludos
|
|
|
En línea
|
|
|
|
^Tifa^
Desconectado
Mensajes: 2.804
|
Podria solucionarce con un RIGHT JOIN... Quisiera pero el RIGHT JOIN y el LEFT JOIN lo que retorna es la otra data de la otra tabla donde sobran campos o existen mas campos que la tabla consultada primera. no se entiende lo se... Un ejemplo rapido, tengo dos tablas: Tabla1 nombres Tabla2 apellidos Suponte que Tabla1 tiene 20 registros , digase 20 nombres, y tabla2 tiene 15 apellidos... y tu quieres ver todos los registros de la tabla1 pero haces un join con tabla2 que tiene menos entonces haces un RIGHT o LEFT join a la tabla1 depende su ubicacion si primera o segunda y ahi retorna lo que buscas... pero en el caso del amigo en cuestion, creo que ya los registros estan totalmente filtrados como caen...
|
|
|
En línea
|
|
|
|
royerphpmysql
Desconectado
Mensajes: 64
que rico tequila.
|
otravez muchas gracias TIFA me tendre que ir al foro de PHP jajaja sludos
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda con una consulta compleja
Bases de Datos
|
luison
|
0
|
1,758
|
17 Mayo 2011, 17:29 pm
por luison
|
|
|
ayuda con consulta sql
Bases de Datos
|
Mr.Blue
|
4
|
4,087
|
16 Septiembre 2011, 23:23 pm
por fran800m
|
|
|
Ayuda con Consulta
PHP
|
dimitrix
|
1
|
1,737
|
20 Febrero 2012, 20:16 pm
por HdM
|
|
|
ayuda en consulta
Bases de Datos
|
elnet
|
2
|
2,340
|
13 Noviembre 2012, 18:02 pm
por Hadess_inf
|
|
|
ayuda consulta
Dudas Generales
|
24592
|
4
|
2,492
|
21 Noviembre 2014, 21:39 pm
por tremolero
|
|