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

Mostrar consulta Mysql con valores Null

Estas en el tema de Mostrar consulta Mysql con valores Null en el foro de Mysql en Foros del Web. Llevo ya varios dias con el mismo problema y por mas que investigo no doy con la solucion. Tengo una tabla llamada "horas" con una ...
  #1 (permalink)  
Antiguo 30/09/2011, 22:51
 
Fecha de Ingreso: marzo-2010
Mensajes: 11
Antigüedad: 14 años, 8 meses
Puntos: 0
Mostrar consulta Mysql con valores Null

Llevo ya varios dias con el mismo problema y por mas que investigo no doy con la solucion.

Tengo una tabla llamada "horas" con una columna "r-hora"

r-hora
====
7:00am
8:00am
9:00am
10:00am
11:00am
12:00pm
1:00pm
2:00pm
3:00pm
4:00pm
5:00pm
6:00pm
7:00pm
8:00pm

Y otra tabla llamada"citas" con columnas "fecha" y "hora"

fecha hora
-------- --------
09-25-2011 7:00am
09-25-2011 9:00am
09-25-2011 12:00pm
09-25-2011 3:00pm
09-25-2011 4:00pm
09-25-2011 5:00pm

Mi consulta la hago de la siguiente manera:
-------------------------------------------------------

Código PHP:
<?php

$consulta 
"SELECT * FROM horas LEFT  JOIN citas ON citas.hora=horas.r-hora "
            
            
$resultado $conexion->query($consulta);
            
            echo 
'r-hora------------Fecha ---- Hora  <br>';
                while(
$filas $resultado->fetch_array(MYSQLI_ASSOC)) {
           
        
?>  
    
        <?php echo $filas['r-hora'?> -- <?php echo $filas['fecha'?> -- <?php echo $filas['hora'?><br>
         
        <?php
        
}

        
?>

Esto me imprime :

r-hora---------Fecha ------- Hora

7:00am -- 09-25-2011 -- 7:00am
9:00am -- 09-25-2011 -- 9:00am
12:00pm -- 09-25-2011 -- 12:00pm
3:00pm -- 09-25-2011 -- 3:00pm
4:00pm -- 09-25-2011 -- 4:00pm
5:00pm -- 09-25-2011 -- 5:00pm

Pero quiero que me imprima:

r-hora---------Fecha ------- Hora

7:00am -- 09-25-2011 -- 7:00am
8:00am --
9:00am -- 09-25-2011 -- 9:00am
10:00am --
11:00am --
12:00pm -- 09-25-2011 -- 12:00pm
1:00pm --
2:00pm --
3:00pm -- 09-25-2011 -- 3:00pm
4:00pm -- 09-25-2011 -- 4:00pm
5:00pm -- 09-25-2011 -- 5:00pm
6:00pm --
7:00pm --

Lo que quiero es que me muestre toda la columna de "r-hora" No importa si no estan ordenadas pero quiero que me muestre toda la columna.

Esta configuracion solo me muetsra los iguales.
Espero que alguien me pueda hechar una mano..

Saludos
  #2 (permalink)  
Antiguo 01/10/2011, 05:03
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Mostrar consulta Mysql con valores Null

Código MySQL:
Ver original
  1. FROM horas H LEFT  JOIN citas C ON H.`r-hora` = C.hora
  2. WHERE 1 OR C.hora IS NULL;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 01/10/2011, 20:52
 
Fecha de Ingreso: marzo-2010
Mensajes: 11
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Mostrar consulta Mysql con valores Null

GNZSOLOYO esa configuracion me imprime exacatmente lo mismo que ya tengo.. No he podido logra hacerlo, pero de todos modos gracias por ayudarme..

Saludos
  #4 (permalink)  
Antiguo 01/10/2011, 21:55
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Mostrar consulta Mysql con valores Null

Mira, no creo que la consulta que te propongo te esté dando lo mismo que tu sacas al principio. Si yo la ejecuto sobre la consola de MySQL, lo que obtengo es:
Código MySQL:
Ver original
  1. mysql> CREATE TABLE horas(r_hora TIME);
  2. Query OK, 0 rows affected (0.01 sec)
  3.  
  4. mysql> INSERT INTO horas
  5.     -> VALUES
  6.     -> ('07:00:00'),
  7.     -> ('08:00:00'),
  8.     -> ('09:00:00'),
  9.     -> ('10:00:00'),
  10.     -> ('11:00:00'),
  11.     -> ('12:00:00'),
  12.     -> ('13:00:00'),
  13.     -> ('14:00:00'),
  14.     -> ('15:00:00'),
  15.     -> ('16:00:00'),
  16.     -> ('17:00:00'),
  17.     -> ('18:00:00'),
  18.     -> ('19:00:00'),
  19.     -> ('20:00:00');
  20. Query OK, 14 rows affected (0.04 sec)
  21. Records: 14  Duplicates: 0  Warnings: 0
  22.  
  23. mysql> CREATE TABLE citas(fecha DATE, hora TIME);
  24. Query OK, 0 rows affected (0.01 sec)
  25.  
  26. mysql> INSERT INTO citas
  27.     -> VALUES
  28.     -> ('2011-09-25','07:00:00'),
  29.     -> ('2011-09-25','09:00:00'),
  30.     -> ('2011-09-25','12:00:00'),
  31.     -> ('2011-09-25','15:00:00'),
  32.     -> ('2011-09-25','16:00:00'),
  33.     -> ('2011-09-25','17:00:00');
  34. Query OK, 6 rows affected (0.02 sec)
  35. Records: 6  Duplicates: 0  Warnings: 0
Y los datos obtenidos:
Código MySQL:
Ver original
  1. mysql> SELECT *
  2.     -> FROM horas H LEFT JOIN citas C ON H.`r_hora` = C.hora;
  3. +----------+------------+----------+
  4. | r_hora   | fecha      | hora     |
  5. +----------+------------+----------+
  6. | 07:00:00 | 2011-09-25 | 07:00:00 |
  7. | 08:00:00 | NULL       | NULL     |
  8. | 09:00:00 | 2011-09-25 | 09:00:00 |
  9. | 10:00:00 | NULL       | NULL     |
  10. | 11:00:00 | NULL       | NULL     |
  11. | 12:00:00 | 2011-09-25 | 12:00:00 |
  12. | 13:00:00 | NULL       | NULL     |
  13. | 14:00:00 | NULL       | NULL     |
  14. | 15:00:00 | 2011-09-25 | 15:00:00 |
  15. | 16:00:00 | 2011-09-25 | 16:00:00 |
  16. | 17:00:00 | 2011-09-25 | 17:00:00 |
  17. | 18:00:00 | NULL       | NULL     |
  18. | 19:00:00 | NULL       | NULL     |
  19. | 20:00:00 | NULL       | NULL     |
  20. +----------+------------+----------+
  21. 14 rows in set (0.00 sec)
Lo que es manifiestamente diferente de lo que dices, y es exactamente lo que quieres obtener.
Existen, si, algunas diferencias:
1) Las horas se deben almacenar en campos de tipo TIME y las fechas en campos de tipo DATE. Tu parece que lo haces en VARCHAR, lo cual es un error grave y que puede generar errores de consulta y resultados erróneos.
2) Si lo que quieres obtener es la hora en formato AM/PM, no es necesario un VARCHAR para ello. Basta con usar la función adecuada:
Código MySQL:
Ver original
  1. mysql> SELECT
  2.     ->   LOWER(DATE_FORMAT(r_hora, '%H:%m%p')) r_hora,
  3.     ->   IFNULL(DATE_FORMAT(fecha, '%m-%d-%Y'), '') fecha,
  4.     ->   IFNULL(LOWER(DATE_FORMAT(hora, '%H:%m%p')), '') hora
  5.     -> FROM horas H LEFT JOIN citas C ON H.`r_hora` = C.hora;
  6. +---------+------------+---------+
  7. | r_hora  | fecha      | hora    |
  8. +---------+------------+---------+
  9. | 07:00am | 09-25-2011 | 07:00am |
  10. | 08:00am |            |         |
  11. | 09:00am | 09-25-2011 | 09:00am |
  12. | 10:00am |            |         |
  13. | 11:00am |            |         |
  14. | 12:00pm | 09-25-2011 | 12:00pm |
  15. | 13:00pm |            |         |
  16. | 14:00pm |            |         |
  17. | 15:00pm | 09-25-2011 | 15:00pm |
  18. | 16:00pm | 09-25-2011 | 16:00pm |
  19. | 17:00pm | 09-25-2011 | 17:00pm |
  20. | 18:00pm |            |         |
  21. | 19:00pm |            |         |
  22. | 20:00pm |            |         |
  23. +---------+------------+---------+
  24. 14 rows in set (0.00 sec)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 03/10/2011, 21:04
 
Fecha de Ingreso: marzo-2010
Mensajes: 11
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Mostrar consulta Mysql con valores Null

Ya cambie los formatos DATE y TIME, No se que es lo que estoy haciendo mal. Me doy cuenta que me hace falta aprender mas sobre mysql, no se ejecutarlo mediante consola. Solamente lo hago en el archivo php. Lo hice de esta manera:

Cita:
$consulta = "
SELECTLOWER(DATE_FORMAT(r_hora, '%H:%m%p')) r_hora,
IFNULL(DATE_FORMAT(fecha, '%m-%d-%Y'), '') fecha,
IFNULL(LOWER(DATE_FORMAT(hora, '%H:%m%p')), '') hora
FROM horas H LEFT JOIN citas C ON H.`r_hora` = C.hora;";

$resultado = $conexion->query($consulta);

echo 'Horas comparada-------Fecha ---- Hora registrada <br>';
while($filas = $resultado->fetch_array(MYSQLI_ASSOC)) {

?>

<?php echo $filas['comph'] ?> -- <?php echo $filas['fecha'] ?> -- <?php echo $filas['hora'] ?><br>


<?php
}
?>
Y me sale lo mismo que te mostre arriba. Talvez en consola salga como tu dices, pero como manipularlos datos desde consola, o como puedo hacerle para imprimirlos como los quiero, no entiendo muy bien. Gracias por ayudarme, ahora mismo me pongo a investigar mas sobre esto del Mysql.

Saludos

Etiquetas: null, php, query, select, sql, tabla
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 14:36.