elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Ayuda con Consulta.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 4 5 6 7 8 Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con Consulta.  (Leído 32,949 veces)
royerphpmysql

Desconectado Desconectado

Mensajes: 64


que rico tequila.


Ver Perfil
Ayuda con Consulta.
« en: 19 Marzo 2010, 22:16 pm »

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 Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Ayuda con Consulta.
« Respuesta #1 en: 19 Marzo 2010, 23:16 pm »

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 Desconectado

Mensajes: 64


que rico tequila.


Ver Perfil
Re: Ayuda con Consulta.
« Respuesta #2 en: 19 Marzo 2010, 23:46 pm »

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 Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Ayuda con Consulta.
« Respuesta #3 en: 20 Marzo 2010, 00:09 am »

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 Desconectado

Mensajes: 64


que rico tequila.


Ver Perfil
Re: Ayuda con Consulta.
« Respuesta #4 en: 20 Marzo 2010, 00:31 am »

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 Desconectado

Mensajes: 2.804


Ver Perfil
Re: Ayuda con Consulta.
« Respuesta #5 en: 20 Marzo 2010, 00:42 am »

Citar
+------------------+-------------+---------------+---------+
| nombres          | matricula   | codigomateria | calif1A |
+------------------+-------------+---------------+---------+
| ALMANZA MAURICIO | 91901014429 | M10           |      80 |
|                                                       | M11           |      90 |
|                                                         | M12           |      69 |
+------------------+-------------+---------------+---------+

Asi de antemano no lo puedes desplegar  :xD 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 Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Ayuda con Consulta.
« Respuesta #6 en: 20 Marzo 2010, 00:45 am »

Podria solucionarce con un RIGHT JOIN...
En línea

royerphpmysql

Desconectado Desconectado

Mensajes: 64


que rico tequila.


Ver Perfil
Re: Ayuda con Consulta.
« Respuesta #7 en: 20 Marzo 2010, 00:48 am »

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 Desconectado

Mensajes: 2.804


Ver Perfil
Re: Ayuda con Consulta.
« Respuesta #8 en: 20 Marzo 2010, 00:49 am »

Citar
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.  :xD  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...  :P  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  :xD  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 Desconectado

Mensajes: 64


que rico tequila.


Ver Perfil
Re: Ayuda con Consulta.
« Respuesta #9 en: 20 Marzo 2010, 01:08 am »

otravez muchas gracias TIFA me tendre que ir al foro de PHP jajaja sludos
En línea

Páginas: [1] 2 3 4 5 6 7 8 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con una consulta compleja
Bases de Datos
luison 0 1,631 Último mensaje 17 Mayo 2011, 17:29 pm
por luison
ayuda con consulta sql
Bases de Datos
Mr.Blue 4 3,818 Último mensaje 16 Septiembre 2011, 23:23 pm
por fran800m
Ayuda con Consulta
PHP
dimitrix 1 1,605 Último mensaje 20 Febrero 2012, 20:16 pm
por HdM
ayuda en consulta
Bases de Datos
elnet 2 2,188 Último mensaje 13 Noviembre 2012, 18:02 pm
por Hadess_inf
ayuda consulta
Dudas Generales
24592 4 2,188 Último mensaje 21 Noviembre 2014, 21:39 pm
por tremolero
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines