Autor Tema: SQL Select From InnerJoin Where consulta reunión de varias tablas con condición  (Leído 4851 veces)

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
Hola de nuevo!!

He estado preguntando full cosas de SQL porque estoy desarrollando un proyecto de la U xDD

Bueno, vengo con otra consulta. Mi problema es este:

El administrador del hospital, programa las citas de acuerdo a cada paciente. Supongamos que tengo 2 pacientes en mi tabla:

ID=1 Nombre=Carlos
ID=2 Nombre=Juan

Ok, a Carlos le programe una cita, con un medico, hora, turno... y a Juan tambien. Ahora, yo tengo en los perfiles de cada paciente, un botón que me permite ver todas las citas de cada uno que se han programado.

El problema surge, cuando al consultarle a Carlos sus citas, me suelta las citas... pero tambien me muestra las de Juan.. cosa que no deberia ser.  :( :(



Solamente debería salir el primero (ademas, también solamente debería mostrar 1 sola cita porque he metido una nada mas..)

El codigo que tengo es este:
Código: [Seleccionar]
<?php
session_start
();
if(
$_SESSION['admin']==Null){
    
header('Location:hosPrin.html');
}else{
if (isset(
$_REQUEST['pos']))
  
$inicio=$_REQUEST['pos'];
else
  
$inicio=0;
?>

<html>
<head>
<meta charset="UTF-8"/>
<link type="css/text" rel="StyleSheet" href="medico.css"/>
<title>Panel de control de medicos</title>
</head>
<body>
<div class="cabecera">
<img src="http://i.imgur.com/o0Uhm9f.png"/>
</div>
<br><hr/><br>
<div id="header" class="cuerpo">
  <div class="barra">
            <ul class="nav">
<li><a href="administrar.php">Pacientes</a>
<ul>
<li><a href="nuevop.php">Nuevo paciente</a></li>
<li><a href="modificar.php">Modificar paciente</a></li>
                        <li><a href="eliminar.php">Eliminar paciente</a></li>
                        <li><a href="consultar.php">Consultar paciente</a></li>
                        <li><a href="cita.php">Programar cita a un paciente</a></li>   
</ul>
</li>
<li><a href="salir.php">Desconectar</a></li>
</ul>
    </div><br><br><br>
    <div class="visor">
    <center><h1>Registro de citas del paciente</h1></center>
    <div>
    <?php
    session_start
();
    
$host="****";
    
$username="****"
    
$pass="****"
    
$db_name="****"
    
$tbl_name="Citas"
    
$connect mysqli_connect($host,$username,$pass,$db_name)or die("cannot connect");
    
$registros=mysqli_query($connect,"select Fecha,
                                          Turno,
                                          cit.idMedicos as idmed,
                                   Hora,
                                          cit.idPacientes as idpac,
                                          Motivo 
                                          from Citas as cit
                                          inner join Medicos as med on med.idMedicos=cit.idMedicos
                                          inner join Pacientes as pac on pac.idPacientes=pac.idPacientes
                                          where cit.idPacientes='
$_SESSION[aidi]'
                                          limit 
$inicio,4") or die("Problemas en el select:".mysqli_error($connect));
    
?>

    <img class="cita" class="im" src="http://oracionesydevocionescatolicas.com/cruz_Roja.png"/>
    <ol style="margin-left: 30px;" class="ci">
    <?php 
    $impresos
=0;
    echo 
"<TABLE BORDER=1>";
    while(
$reg=mysqli_fetch_array($registros)){
        
$impresos++;
    echo 
"<tr>
        <td WIDTH=100 HEIGHT=50>"
.$reg['Fecha']."</td>
        <td WIDTH=100 HEIGHT=50>"
.$reg['idmed']."</td>
        <td WIDTH=100 HEIGHT=50>"
.$reg['Turno']."</td>
        <td WIDTH=100 HEIGHT=50>"
.$reg['Hora']."</td>
        <td WIDTH=300 HEIGHT=50>"
.$reg['Motivo']."</td>
         </tr>"
;
    } 
    echo 
"</TABLE>";
    if (
$inicio==0)
  echo 
"<img class='anterior' src='http://i.imgur.com/pqqv82f.png'/>";
  else
{
  
$anterior=$inicio-4;
  echo 
"<a href=\"citapac.php?pos=$anterior\"><img class='anterior' src='http://i.imgur.com/pqqv82f.png'/> </a>";
}
  if (
$impresos==4)
{
  
$proximo=$inicio+4;
  echo 
"</pre>                       <a href=\"citapac.php?pos=$proximo\"><img class='siguiente' src='http://i.imgur.com/cJdRIW8.png'/></a></pre>";
}
  else
  echo 
"</pre>                       <img class='siguiente' src='http://i.imgur.com/cJdRIW8.png'/></pre>";

mysqli_close($connect);
?>

  </ol>
  <br><br>
  <pre>     <a href="consultar.php"><img class="im" src="http://i.imgur.com/T5bTm0U.png"/></a></pre>
  </div>
  </div>
  </div>
<br><hr/><br>
<div class="footer">
<pre>   <a href="administrar.php"><img src="http://i.imgur.com/XazqgCb.png"/></a></pre>
</div>
</body>
</html>
<?php ?>

En el Query (o la consulta) a SQL, coloque una condicion en Where:

$registros=mysqli_query($connect,"select Fecha,
                                          Turno,
                                          cit.idMedicos as idmed,
                                        Hora,
                                          cit.idPacientes as idpac,
                                          Motivo
                                          from Citas as cit
                                          inner join Medicos as med on med.idMedicos=cit.idMedicos
                                          inner join Pacientes as pac on pac.idPacientes=pac.idPacientes
                                          where cit.idPacientes='$_SESSION[aidi]'
                                          limit $inicio,4") or die("Problemas en el select:".mysqli_error($connect));


Lo que tiene "$_SESSION[aidi]" es el id del paciente almacenado en la pagina anterior del perfil. La variable lo almacena, porque ya lo he comprobado en la anterior y en esta pagina también con echo.. me devuelve el valor correctamente, pero no entiendo porque no se cumple lo que yo deseo.. Lo que deseo realizar era algo así como "imprime todo esto que te señalo solo si el idPacientes de la tabla Cita es igual a este id que tengo acá"

En cuanto al numero de celdas, solo quiero que muestre 4 registros por pagina... y al parecer, ya entiendo porque me tira 4 registros en la imagen. Eso de los registros creo que ya se la solución.. si no lo logro les aviso, pero lo que si me tiene pensando es el problema anterior... ¿Sabrían como resolver esto?  :-\
« Última modificación: 07 de Agosto 2015, 21:31 por César Krall »
"Luchar por tus sueños y cumplirlos... eso es vivir.."

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Mostrar celdas con una condición (where)
« Respuesta #1 en: 07 de Agosto 2015, 21:14 »
Hola!

Aquí parece que tuvieras un error:

Código: [Seleccionar]
inner join Pacientes as pac on pac.idPacientes=pac.idPacientes
Esto no parece una condición válida para el join: on pac.idPacientes=pac.idPacientes

Revisa eso, me imagino que la condición del join deberá ser

inner join Pacientes as pac on pac.idPacientes=cit.idPacientes

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
Ay cesar, mil gracias! otra chorrada mia jajaja!! creo que necesito tomar un descanso  ::)

Gracias por tu ayuda!!!
"Luchar por tus sueños y cumplirlos... eso es vivir.."

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".