Autor
|
Tema: Ayuda con Consulta. (Leído 34,771 veces)
|
Skeletron
Desconectado
Mensajes: 1.731
A long way to go
|
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... 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
Mensajes: 1.731
A long way to go
|
mysql> SELECT alumnos.nombre, alumnos.apellido, materias.matricula, materias.calificacion FROM alumnos NATURAL RIGHT JOIN materias GROUP BY matricula; +--------+----------+-----------+--------------+ | nombre | apellido | matricula | calificacion | +--------+----------+-----------+--------------+ | Noel | Broda | 1 | 10 | | Tiffa | Perez | 2 | 9 | +--------+----------+-----------+--------------+ 2 ROWS IN SET (0.02 sec) mysql> SELECT * FROM materias; +-----------+--------------+ | matricula | calificacion | +-----------+--------------+ | 1 | 10 | | 2 | 9 | | 2 | 8 | | 1 | 6 | +-----------+--------------+ 4 ROWS IN SET (0.00 sec)
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
Mensajes: 64
que rico tequila.
|
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
|
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
Mensajes: 2.804
|
Por eso te decia desde un inicio Skeletron no se podia de la manera que el lo desea no lo tomes como un reclamo 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
|
|
|
En línea
|
|
|
|
royerphpmysql
Desconectado
Mensajes: 64
que rico tequila.
|
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
Mensajes: 1.731
A long way to go
|
No es tan dificil... SELECT alumnos.nombre, alumnos.apellido, alumnos.matricula, kardex.calificacion, 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['apellido'].' '.$row['nombre'].' de matricula: '.$row[matricula].' obtuvo las siguiente calificaciones:</br>'; echo 'Codigo de Materia: '.$row['codigomateria'].' | Calificacion: '.$row['calificacion'].'</br>'; echo 'Codigo de Materia: '.$row['codigomateria'].' | Calificacion: '.$row['calificacion'].'</br>'; }
Dime si te funcionó.. Que lo hice aca sin ningun IDE
|
|
|
En línea
|
|
|
|
Skeletron
Desconectado
Mensajes: 1.731
A long way to go
|
Si no entiendes el codigo, me dices y te lo explico paso por paso
|
|
|
En línea
|
|
|
|
royerphpmysql
Desconectado
Mensajes: 64
que rico tequila.
|
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
Mensajes: 64
que rico tequila.
|
<?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
|
|
|
|
|
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
|
|