PHP - Subconsultas

 
Vista:

Subconsultas

Publicado por Erik (14 intervenciones) el 26/09/2007 02:29:38
Hola,

Tengo un problema con PHP y MySql y es el siguiente:

Tengo 2 tablas una que contiene:

TABLA MATRICULAS
- id_estudiante : contiene los valores (1,2,3...,n)
- matricula : contienes los valores (EN0001, JP0003, AB0002,...n)


TABLA NOTAS
- id_estudiante : contiene los valores (1,2,3...,n)
- matematica : contienes los valores (70, 80, 90,...n)
- historia : contienes los valores (75, 85, 95,...n)

Lo siguiente es que tengo un formulario que captura una MATRICULA, entonces lo que quiero hacer es comparar la MATRICULA introducida con la que existe en la base de datos y capturar el ID_ESTUDIANTE correspondiente a esta MATRICULA.

Despues consultar el ID_ESTUDIANTE encontrado en la tabla NOTAS para obtener las notas de los estudiantes y mostrarla en pantalla, tengo un codigo pero no me resulta, espero me puedan ayudar en esto.

<?php
$conexion=mysql_connect("localhost","root","") or die("Problemas en la conexion");

mysql_select_db("data_liceo",$conexion) or die("Problemas en la selección de la base de datos");

$registros=mysql_query("SELECT * FROM notas WHERE id_estudiante IN (SELECT id_estudiante FROM matriculas WHERE id_estudiante ='$_REQUEST[id_estudiante]')",$conexion) or
die("Problemas en el select:".mysql_error());

if ($reg=mysql_fetch_array($registros))

{
echo "Matematica: ".$reg['matematica']."<br>";
echo "Lenguaje : ".$reg['historia']."<br>";

}
else
{
echo "No existe un alumno con ese mail.";
}
mysql_close($conexion);

?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Subconsultas

Publicado por Diego Romero (1450 intervenciones) el 26/09/2007 05:14:41
Te falta calificar el campo de qué tabla tiene que considerar la consulta. Pero aparte de eso, esa consulta no funciona como debería porque a la larga resultará en un resultado vacío, ¿está vacía porque ese ID no tiene materias o porque el ID no existe o la matrícula no existe?.

Creo que lo mejor es verficar que la matricula se corresponda con alguna almacenada en la tabla matriculas y solo si existe lanzar la otra consulta, algo así:

$sql = "SELECT id_estudiante FROM matriculas WHERE matricula='$_REQUEST[matricula]'"; // la búsqueda es para una matricula coincidente
$result = mysql_query($sql, $conexion);
if (mysql_num_rows($result) == 0) { echo "No existe esa matricula"; exit; }
$este_id = mysql_fetch_array($result);
$sql = "SELECT * FROM notas WHERE id_estudiante='$este_id[id_estudiante]'";
$result = mysql_query($sql, $conexion);
if (mysql_num_rows($result) == 0) { echo "El alumno no tiene materias"; exit; }
// Listar las materias aquí

Ten en cuenta que partes sabiendo la matricula, no el id del estudiante, tal como dices al principio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Subconsultas

Publicado por Erik (14 intervenciones) el 27/09/2007 00:37:31
Diego, gracias por tu ayuda ya van 2 veces que me ayudas aunque la segunda no me funciono pero vi algo que andaba buscando en tu codigo y se lo agrege al que ya tenia y me funciono.

Realmente lo que queria era capturar el id de la tabla matricula y despues validarlo con el id de la tabla notas y despues conseguir en la tabla notas las notas segun el id. Consegui esto con el siguiente codigo.

Gracias!!!

<?php
$conexion=mysql_connect("localhost","root","") or die("Problemas en la conexion");

mysql_select_db("data_liceo",$conexion) or die("Problemas en la selección de la base de datos");

$registros=mysql_query("SELECT * FROM matriculas WHERE matricula ='$_REQUEST[matricula]'",$conexion) or
die("Problemas en el select1:".mysql_error());

$reg = mysql_fetch_array($registros);


$registros1=mysql_query("SELECT * FROM notas WHERE id_estudiante = '$reg[id_estudiante]'",$conexion) or
die("Problemas en el select2:".mysql_error());

if (mysql_num_rows($registros1) == 0) { echo "El alumno no tiene materias"; exit; }

if ($reg=mysql_fetch_array($registros1))

{
echo "Matematica: " .$reg['matematica']."<br>";
echo "Lenguaje : " .$reg['lenguaje']."<br>";

}
else
{

echo "No existe Matricula.";
}

mysql_close($conexion);

?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Subconsultas

Publicado por Diego Romero (1450 intervenciones) el 27/09/2007 01:00:33
¿Y qué pasa si se pide consultar una matrícula que no existe?.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Subconsultas

Publicado por Erik (14 intervenciones) el 27/09/2007 06:43:10
Me dice que la "Matricula no existe".

Lo probe aunque hay un par de cosas que no entiendo muy bien todavia, me gustaria hablar contigo para decirte acerca de lo que estoy haciendo. mi e-mail es [email protected] soy de Republica Dominicana.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Subconsultas

Publicado por elena (1 intervención) el 28/11/2008 23:34:39
HOlaa!!!

Necesito hacer una subconsulta en php, he hecho la consulta en mysql y me funciona pero al pasarla a php solo considera el 1º select.
A ver si me pudieras ayudar:


CONSULTA EN MYSQL

SELECT aula FROM asignatura WHERE codigo LIKE 'BIOLOGA' OR codigo_guia LIKE 'BIOLOGIA' OR descripcion LIKE 'BIOLOGIA' AND EXISTS (SELECT * FROM titulacion WHERE codigo LIKE 'CCAA' OR codigo_guia LIKE 'CCAA' OR descripcion LIKE 'CCAA' AND asignatura.titulacion_id = codigo_guia);

CONSULTA EN PHP:

$query = mysql_query("SELECT aula FROM asignatura WHERE codigo LIKE '$asignatura' OR codigo_guia LIKE '$asignatura' OR descripcion LIKE '$asignatura' AND EXISTS (SELECT * FROM titulacion WHERE codigo LIKE '$titulacion' OR codigo_guia LIKE '$titulacion' OR descripcion LIKE '$titulacion')",$conexion);

Gracias por adelantadoooo!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Subconsultas

Publicado por zashj (3 intervenciones) el 20/05/2019 17:31:34
hola tengo un caso parecido al de Elena..

en mi caso tengo 2 consultas la primera es un listado de pedidos y la puedo visualizar perfectamente pero esta a su ves tengo que mostrar por articulo una nueva consulta de los lotes asignados por lo que tengo 2 variables 1 el numero de pedido y 2 el articulo... mi query en mySQL me funciona correctamente ... pero el pasarlo a php no muestra resultados, espero me puedan ayudar ...saludos

este es mi query de mysql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Select
  t1.DocEntry 'DOCUMENTO',
  T0.ItemCode 'CODIGO ARTICULO',
  T0.ItemName 'NOMBRE ARTICULO',
  T0.WhsCode 'ALMACEN',
  T0.Quantity 'METROS',
  T0.BatchNum 'LOTE',
  T0.U_Largo 'LARGO',
  T0.U_Ancho 'ANCHO'
  From
    OIBT T0
  inner join RDR1 t1 on t1.ItemCode = T0.ItemCode
  Where
  T0.Quantity > 0
  And T0.ItemCode ='".$art."'
  And t1.DocEntry ='".$doc."'
  And t0.WhsCode in('BODEGA','BODEGA_G','PROTON','CORTADO')
  Group By
  t1.DocEntry, T0.WhsCode, T0.Quantity, T0.BatchNum, T0.U_Largo, T0.U_Ancho, T0.IsCommited,
  T0.InDate, T0.OnOrder, T0.ItemCode,T0.ItemName
  Order By T0.ItemCode, T0.BatchNum
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

RE:Subconsultas

Publicado por Mauro (1036 intervenciones) el 20/05/2019 18:48:01
Muestra tu código php por favor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Subconsultas

Publicado por zashj (3 intervenciones) el 20/05/2019 19:20:52
hola este es mi codigo en php <?php session_start(); ?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<html>
<head>
<META HTTP-EQUIV="REFRESH" CONTENT="600" charset="utf-8"/>
</head>
 
<link href="assets/css/bootstrap.min.css" rel="stylesheet" type="text/css">
<link href="assets/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="assets/css/main.css" rel="stylesheet" type="text/css">
<link href="assets/css/my-custom-styles.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="style/style_edo_vencer_filtro.css" />
<script src="js/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" language="javascript" src="TableFilter/tablefilter_all.js"></script>
<script src="sortabletable.js" language="javascript" type="text/javascript"></script>
<script src="tfAdapter.sortabletable.js" language="javascript" type="text/javascript"></script>
<script src="assets/js/jquery.min.js" type="text/javascript"></script>
<script src="assets/js/jquery.fixedtableheader.1.0.3.js" type="text/javascript"></script>
 
<link rel="stylesheet" type="text/css" href="style/style.css" />
<script src="js/jquery.min.js" type="text/javascript"> </script>
<script src="js/jquery.fixedtableheader-1-0-2-m.min.js" type="text/javascript"></script>
 
<link id="inventario_style" type="text/css" rel="stylesheet" href="TableFilter/filtergrid.css">
<script id="sortabletable" type="text/javascript" src="TableFilter/sortabletable.js"></script>
<script id="sortabletable_adapter" type="text/javascript" src="TableFilter/tfAdapter.sortabletable.js"></script>
 
<script type="text/javascript">
$(document).ready(function() {
$('.tbl').fixedtableheader({
        headerrowsize:1}
        );
        }
        );
</script>
 
<div align="center">
<?php
$ART=$_GET['Art'];
$DOC=$_GET['Doc'];
 
if (isset($_SESSION['k_username'])) {
//  
    include("../conn.php");
if (!$conn || !mssql_select_db('SPN_NEW', $conn)) {
    die('Unable to connect or select database!');
}
}
 
$query_det="select T0.DocEntry Pedido,
    T0.ItemCode codigo,
    T0.Dscription Descipcion,
    T1.WhsCode Alamacen,
    T1.Quantity M2,
    T1.BatchNum Lote,
    T1.U_Ancho Ancho,
    T1.U_Largo Largo
from RDR1 T0
join OIBT T1 on T1.ItemCode = T0.ItemCode
where 
  T1.Quantity > 0
  --and T1.WhsCode in ('BODEGA','BODEGA_G','PROTON','CORTADO')
  and T0.DocEntry ='".$Doc."'
  Group By 
  T0.DocEntry,T1.WhsCode,T1.Quantity,T1.BatchNum,T1.U_Ancho,T1.U_Largo,T1.IsCommited,T1.InDate,T1.OnOrder, T0.ItemCode,T0.Dscription, T1.ItemName
  order by T0.ItemCode,T1.BatchNum";
  $nom="Select T0.ItemName 'Nombre' from OITM T0 Where T0.ItemCode ='".$ART."'";
 
$result = mssql_query($query_det);
$resnom = mssql_query($nom);
 
    if($result==false)
    {
        echo 'No se puede conectar con la base de datos';
    }
    else
    {
 
        // CReacion de la Tabla HTML apartir de Consulta
        $row2 = mssql_fetch_array($resnom);
        echo '<h4><b>'.$row2['Nombre'].'</b>';
        ?>
        <a class="btn btn-sm btn-success" href="placasExcel.php?Art=<?php echo $ART;?>" target="_blanck">
            <i class="fa fa-file-excel-o fa-lg" style="color: white;"></i>
        </a>
        <?php
        echo '</h4><h5>'.$ALM.'</h5>';
        //echo "<a href=./placas_export.php?Art=".$ART."><img src=\"/images/export_to_excel.gif\"></a>";
        echo '<div class="table-responsive">
        <table style="font-size: 9px; border:1px solid #CCC;  width:100%;"
     class="sv TF" id="inventario" >';
                //<table id="inventario_style" class="sv" width="100%" style="overflow:scroll; font-size:9px;">
        echo '<thead><tr>
                <th style="background-color: #165475; color: #FAFAFA;"><center>LOTE</center></th>

               <th  style="background-color: #165475; color: #FAFAFA;"><center>ALMACEN</center></th>
                <th style="background-color: #165475; color: #FAFAFA;"><center>M2</center></th>
                <th style="background-color: #165475; color: #FAFAFA;"><center>LARGO</center></th>
                <th style="background-color: #165475; color: #FAFAFA;"><center>ANCHO</center></th>
              </tr></thead><tbody >';
        while( $row = mssql_fetch_array( $result))
        {
              echo "<tr class=' even'>"
              ."<td>".$row['LOTE']."</td>"
                ."<td>".$row['ALMACEN']."</td>"
              ."<td>".number_format(round($row['M2'],4),4)."</td>"
              ."<td>".number_format(round($row['LARGO'],4),4)."</td>"
              ."<td>".number_format(round($row['ANCHO'],4),4)."</td>"
              ."</tr>"
              ;
        } //while
    } //Consulta SQL
//} //sesion
//else{
//  session_destroy();
//  Header("Location: index.php");
//  }
?>
 
</tbody>
 
</table>
</div>
</div>
 
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Subconsultas

Publicado por ZASHJ (3 intervenciones) el 21/05/2019 16:56:55
te cargue el codigo ayuda porfa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

RE:Subconsultas

Publicado por Mauro (1036 intervenciones) el 22/05/2019 16:12:33
Perdón, había publicado un mensaje para otro thread... cuando tenga un rato miro tu código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar