Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Duda con consulta MYSQL

Estas en el tema de Duda con consulta MYSQL en el foro de Mysql en Foros del Web. Hola buenas tardes a todos. Estoy creando una web de la cual destaco una base de datos conformada con dos tablas, de la siguiente manera: ...
  #1 (permalink)  
Antiguo 30/06/2011, 15:45
Avatar de fekaa11  
Fecha de Ingreso: abril-2011
Ubicación: Córdoba / Argentina
Mensajes: 115
Antigüedad: 13 años
Puntos: 34
Duda con consulta MYSQL

Hola buenas tardes a todos.

Estoy creando una web de la cual destaco una base de datos conformada con dos tablas, de la siguiente manera:

Alumnos_lista conformada de la siguiente manera:

Cita:
id - nombre - grupo
1 - David - 6A
2 - Mariano - 6B
3 - Nahuel - 6A
Estudiantes_materias conformada de la siguiente manera:

Cita:
id - nombre - grupo - materia - objetivo
118 - David - 6A - MATEMATICAS - F
245 - Mariano - 6B - INGLES - D
347 - Nahuel - 6A - LENGUA - M
215 - David - 6A - INGLES - D
115 - Mariano - 6B - ARTE - F
5 - Nahuel - 6A - CS SOCIALES - D
Lo que necesito basicamente es listar los alumnos de la tabla de 6A de la tabla alumnos_lista en una tabla (html) encabezada, y al mismo tiempo agregar en esa misma tabla (debajo de otro encabezado obviamente) el grupo, la materia y el objetivo de la materia INGLES unicamente.

Digamos, tendría que obtener los nombres y el grupo de la primera tabla, y para cada nombre que extraigo de esa tabla tengo que agregarle su materia y objetivo correspondiente. He intentado hacer la siguiente consulta:

Select alumnos_lista.nombre,alumnos_lista.grupo,estudiant es_materias.materia,estudiantes_materias.objetivo FROM alumnos_lista,estudiantes_materias WHERE grupo=''6A" AND materia="INGLES";

Resulta que la consulta anterior me devuelve todos los alumnos que se encuentran en la tabla estudiantes_materias cuando en la consulta indico especificamente que los que quiero extraer son los de alumnos_lista (alumnos_lista.nombre por ejemplo).

Espero que se haya entendido, gracias!!
__________________
Pedir perdón es de hombres inteligentes. Perdonar es de sabios.
  #2 (permalink)  
Antiguo 30/06/2011, 15:50
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Duda con consulta MYSQL

Y en qué parte está el PHP?
Eso tendría que ir en la zona de SQL. Pídele a un moderador que cambie de lugar tu post.

Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #3 (permalink)  
Antiguo 30/06/2011, 15:51
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 2 meses
Puntos: 55
Respuesta: Duda con consulta MYSQL

te faltan los nombres de las tablas en el where.

esto va en el foro de sql.
  #4 (permalink)  
Antiguo 30/06/2011, 16:11
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Duda con consulta MYSQL

Te faltaba indicar como querías unir las dos tablas, en este caso, las que tengan los nombres del alumno coincidente.

Código MySQL:
Ver original
  1. Select alumnos_lista.nombre,alumnos_lista.grupo,estudiant es_materias.materia,estudiantes_materias.objetivo
  2. FROM alumnos_lista INNER JOIN estudiantes_materias ON alumnos_lista.nombre = estudiantes_materias.nombre  
  3. WHERE alumnos_lista.grupo="6A" AND estudiantes_materiasmateria="INGLES";
  #5 (permalink)  
Antiguo 01/07/2011, 09:06
Avatar de fekaa11  
Fecha de Ingreso: abril-2011
Ubicación: Córdoba / Argentina
Mensajes: 115
Antigüedad: 13 años
Puntos: 34
Mensaje Respuesta: Duda con consulta MYSQL

Hay un problema.
El campo materia hay veces que está nulo. En ese caso quiero que me muestre los alumnos pero en los otros campos de la tabla quiero que se muestre como nulo (como que no hay datos seteados). Imagenes para entender mejor:

1- Como se ve aquí no está completo el campo "materia", ya que el profesor todavía no ha ingresado datos sobre dicho alumno.



2- En la segunda imagen se puede observar como el profesor ha insertado los datos sobre dicho alumno, y se vería asi:



3- En la tercera imagen se vé como se muestra la tabla con la consulta que me has asignado.



4- En la cuarta imagen se puede observar como quiero que sean los resultados devueltos.



El problema surge cuando cambio mi código para que me imprime tal cual los valores de la consulta. Me devuelve todos los alumnos del grupo X, pero en todas sus materias cuando me tendría que devolver la que yo designe unicamente. Cuando cambio el WHERE materias='INGLES' (por ejemplo) no me devuelve ningún nombre (Ya que no hay ningún alumno con sus datos seteados en INGLES), o simplemente me devuelve los alumnos sobre los que se han seteado datos. En la siguiente imagen se puede ver como al usar la consulta especificada mas arriba (respuesta de alex) me devuelve todos los nombres, pero en todas sus materias:



En este caso, El primer y ultimo alumno son el mismo pero cada uno con una materia diferente.

Como podría solucionarlo ? aquí mi codigo:

Código PHP:
Ver original
  1. <?php $consulta= "SELECT alumnos_lista.nombre,alumnos_lista.grupo,estudiantes_materias.materia,estudiantes_materias.ob1,estudiantes_materias.ob2,estudiantes_materias.ob3,estudiantes_materias.ob4,estudiantes_materias.ob5,estudiantes_materias.ob6,estudiantes_materias.ob7,estudiantes_materias.ob8,estudiantes_materias.ob9,estudiantes_materias.ob10,estudiantes_materias.ob11,estudiantes_materias.ob12,estudiantes_materias.ob13,estudiantes_materias.ob14,nota,valoracion,juicio FROM alumnos_lista INNER JOIN estudiantes_materias ON alumnos_lista.nombre = estudiantes_materias.nombre WHERE alumnos_lista.grupo='$grupo'";
  2. //Consulta errónea
  3. $query = mysql_query($consulta) or die("<strong>Error al ejecutar la consulta MySQL</strong>");
  4. echo "<table border=1 cellpadding=1 cellspacing=0><tr><th colspan=18><center>INFORME  GRUPO: ".$grupo." - ".$materia." </th><tr><TR><th bgcolor=silver><font size=1 ><center>___________ESTUDIANTE___________</font></th>
  5. <th bgcolor=silver><font size=1 ><center>01</font></th>
  6. <th bgcolor=silver><font size=1 ><center>02</font></th>
  7. <th bgcolor=silver><font size=1 ><center>03</font></th>
  8. <th bgcolor=silver><font size=1 ><center>04</font></th>
  9. <th bgcolor=silver><font size=1 ><center>05</font></th>
  10. <th bgcolor=silver><font size=1 ><center>06</font></th>
  11. <th bgcolor=silver><font size=1 ><center>07</font></th>
  12. <th bgcolor=silver><font size=1 ><center>08</font></th>
  13. <th bgcolor=silver><font size=1 ><center>09</font></th>
  14. <th bgcolor=silver><font size=1 ><center>10</font></th>
  15. <th bgcolor=silver><font size=1 ><center>11</font></th>
  16. <th bgcolor=silver><font size=1 ><center>12</font></th>
  17. <th bgcolor=silver><font size=1 ><center>13</font></th>
  18. <th bgcolor=silver><font size=1 ><center>14</font></th>
  19. <th bgcolor=silver><font size=1 ><center>Nota</font></th>
  20. <th bgcolor=silver><font size=1 ><center>Val</font></th>
  21. <th bgcolor=silver><font size=1 ><center>Juicio Valorativo</font></th></TR>";
  22. while($row=mysql_fetch_assoc($query)){
  23.     if($row['nota'] == 0){
  24.             $nota = "";
  25.         }else{
  26.             $nota = $row['nota'];
  27.         }
  28.     echo "<tr><td>".$row["nombre"]."</td><td>".$row['ob1']."</td><td>".$row['ob2']."</td><td>".$row['ob3']."</td><td>".$row['ob4']."</td><td>".$row['ob5']."</td><td>".$row['ob6']."</td><td>".$row['ob7']."</td><td>".$row['ob8']."</td><td>".$row['ob9']."</td><td>".$row['ob10']."</td><td>".$row['ob11']."</td><td>".$row['ob12']."</td><td>".$row['ob13']."</td><td>".$row['ob14']."</td><td>".$row['nota']."</td><td>".$row['valoracion']."</td><td>".$row['juicio']."</td></tr>";   
  29. }
  30. echo "</table><br><font color='red' size=3>Atenci&oacute;n: S&oacute;lo se listar&aacute;n los estudiantes sobre los cuales se hayan insertado datos.";
  31. ?>

Graciass!!
__________________
Pedir perdón es de hombres inteligentes. Perdonar es de sabios.

Etiquetas: php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:51.