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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  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 33,186 veces)
Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Ayuda con Consulta.
« Respuesta #10 en: 20 Marzo 2010, 01:16 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...

Si hace un:
alumnos rigth join materias
Se mostrarán todas las entradas en MATERIAS, con su respectivo alumno. Luego con un GROUP BY matricula, se soluciona todo..


Tio, prueba ésto:
SELECT alumnos.nombres, kardex.matricula, kardex.codigomateria, kardex.calif1A FROM alumnos NATURAL RIGHT JOIN GROUP BY matricula;


En línea

Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Ayuda con Consulta.
« Respuesta #11 en: 20 Marzo 2010, 01:27 am »

Código
  1. mysql> SELECT alumnos.nombre, alumnos.apellido, materias.matricula, materias.calificacion FROM alumnos NATURAL RIGHT JOIN materias GROUP BY matricula;
  2. +--------+----------+-----------+--------------+
  3. | nombre | apellido | matricula | calificacion |
  4. +--------+----------+-----------+--------------+
  5. | Noel   | Broda    |         1 |           10 |
  6. | Tiffa  | Perez    |         2 |            9 |
  7. +--------+----------+-----------+--------------+
  8. 2 ROWS IN SET (0.02 sec)
  9.  
  10.  
  11.  
  12. mysql> SELECT * FROM materias;
  13. +-----------+--------------+
  14. | matricula | calificacion |
  15. +-----------+--------------+
  16. |         1 |           10 |
  17. |         2 |            9 |
  18. |         2 |            8 |
  19. |         1 |            6 |
  20. +-----------+--------------+
  21. 4 ROWS IN SET (0.00 sec)
  22.  
  23.  
  24.  


El problema de ahí esta en que no muestra todas las entradas MATRICULA...
Entonces no tendría que hacer el GROUP BY...


Tu tio, lo que quieres ahcer, es mostrar todas las matriculas de la tabla extraña, y con el nombre y apellido del responzable de esa calificacion?


En línea

royerphpmysql

Desconectado Desconectado

Mensajes: 64


que rico tequila.


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

mmm entonces tendria que modificar la estructura de las tablas.

en la tabla kardex se van alimentando las materias con sus calificaciones.

la tabla kardex esta ligada por medio de la matricula con la de alumnos.

cuando doy de alta una calificacion esta se almacena en tabla kardex con numero de matricula, codigo materia y su respectiva calificacion.

donde consulto quiero mostrar solo una vez la matricula pero sus diferentes calificaciones en sus respectivas codigomateria.

espero explicarme

saludos
En línea

seba123neo


Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Ayuda con Consulta.
« Respuesta #13 en: 20 Marzo 2010, 01:47 am »

pienso lo mismo que te dijo ^TiFa^ , no podes hacer que te traiga 1 sola vez la matricula y a la vez todas las calificaciones que tenga...es un contradiccion...es como estar omitiendo campos de una columna y no de otras...y un group by no serviria porque si son de diferentes ¿ fechas y materias ? vos lo deberias mostrar igual.

¿¿ que problema hay con que te muestre la matricula siempre ??  yo no le veo problema...capas estas haciendo mal el planteo de donde queres mostrar eso...por eso pregunto..donde vas a mostrar esos datos..en que estas programando ??

saludos.
En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.804


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

Por eso te decia desde un inicio Skeletron  ;) no se podia de la manera que el lo desea  ;) no lo tomes como un reclamo  :rolleyes:

Porque mejor Skeletron, no le haces una especie de script en PHP donde, capte todos los resultados de una consulta con GROUP BY y pos... divida las cadenas y solo muestre la primera cadena de registros completas, y el resto pues solo muestre el 3 registro por ejemplo????

Mediante scripts lo que el pide se puede organizar, mediante procedimientos almacenados podria ser igual.. pero con 1 sola consulta SQL aun no lo considero posible  :rolleyes:
En línea

royerphpmysql

Desconectado Desconectado

Mensajes: 64


que rico tequila.


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

 :-( sip creo que MYSQL esta bien la consulta

SELECT alumnos.nombres, kardex.matricula, kardex.codigomateria, kardex.calif1A FROM alumnos, kardex WHERE alumnos.matricula = kardex.matricula GROUP BY codigomateria

donde el resultado es este.

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

como lo digo nuestra amiga TIFA no se puede violar la orden del resultado solo hay que realizar un buen SCRIPT en PHP para qeu me omita las ultimas 3 lineas  de nombres y matriculas y solo muestre todas las materias y calificaciones.

THANKS... si estuvieran aqui les invitara unas cheves a todos jaja
En línea

Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Ayuda con Consulta.
« Respuesta #16 en: 20 Marzo 2010, 02:13 am »

No es tan dificil...

Código
  1. SELECT alumnos.nombre, alumnos.apellido, alumnos.matricula,
  2. kardex.calificacion, kardex.codigomateria
  3. FROM alumnos, kardex
  4. WHERE kardex.matricula=alumnos.matricula");
  5.  
  6. $row=mysql_fetch_array($res) //hago esto, para poder tomar el nombre antes de entrar al WHILE.
  7.  
  8. echo 'El alumno '.$row['apellido'].' '.$row['nombre'].' de matricula: '.$row[matricula].' obtuvo las siguiente calificaciones:</br>';
  9.  
  10. echo 'Codigo de Materia: '.$row['codigomateria'].' | Calificacion: '.$row['calificacion'].'</br>';
  11.  
  12. while($row=mysql_fetch_array($res)){
  13.  
  14.   echo 'Codigo de Materia: '.$row['codigomateria'].' | Calificacion: '.$row['calificacion'].'</br>';
  15.  
  16. }


Dime si te funcionó.. Que lo hice aca sin ningun IDE
En línea

Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Ayuda con Consulta.
« Respuesta #17 en: 20 Marzo 2010, 02:15 am »

Si no entiendes el codigo, me dices y te lo explico paso por paso
En línea

royerphpmysql

Desconectado Desconectado

Mensajes: 64


que rico tequila.


Ver Perfil
Re: Ayuda con Consulta.
« Respuesta #18 en: 20 Marzo 2010, 02:30 am »

mmm suena que si va funcionar pero por lo pronto me mando error de sintaxis con el echo.. dejame ver.. quiza le falte algo. lo copie tal cual lo pusiste..
En línea

royerphpmysql

Desconectado Desconectado

Mensajes: 64


que rico tequila.


Ver Perfil
Re: Ayuda con Consulta.
« Respuesta #19 en: 20 Marzo 2010, 02:39 am »

<?PHP

   // Conectar con el servidor de base de datos
      $conexion = mysql_connect ("localhost", "root", "root")
         or die ("No se puede conectar con el servidor");

   // Seleccionar base de datos
      mysql_select_db ("escuela")
         or die ("No se puede seleccionar la base de datos");

$res=mysql_query("SELECT alumnos.nombres, alumnos.apellidos, alumnos.matricula, kardex.calif1A, kardex.codigomateria FROM alumnos, kardex WHERE kardex.matricula=alumnos.matricula");

$row=mysql_fetch_array($res) //hago esto, para poder tomar el nombre antes de entrar al WHILE.
 
echo 'El alumno '.$row['apellidos'].' '.$row['nombres'].' de matricula: '.$row[matricula].' obtuvo las siguiente calificaciones:</br>';

while($row=mysql_fetch_array($res)){    echo 'Codigo de Materia: '.$row['codigomateria'].' | Calificacion: '.$row['calif1A'].'</br>';
       }
echo "<ul> </ul>";
echo "<td><div align=left><a href=entra.php>Retornar al Menú Principal</a></div></td>";
      }
      else
         print ("No hay noticias disponibles");

// Cerrar conexión
   mysql_close ($conexion);
?>


me marca esto.
Parse error: syntax error, unexpected T_ECHO in C:\AppServ\www\alumnos\consultasola.php on line 30
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,649 Último mensaje 17 Mayo 2011, 17:29 pm
por luison
ayuda con consulta sql
Bases de Datos
Mr.Blue 4 3,849 Último mensaje 16 Septiembre 2011, 23:23 pm
por fran800m
Ayuda con Consulta
PHP
dimitrix 1 1,626 Último mensaje 20 Febrero 2012, 20:16 pm
por HdM
ayuda en consulta
Bases de Datos
elnet 2 2,208 Último mensaje 13 Noviembre 2012, 18:02 pm
por Hadess_inf
ayuda consulta
Dudas Generales
24592 4 2,212 Último mensaje 21 Noviembre 2014, 21:39 pm
por tremolero
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines