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

Ayuda con Select

Estas en el tema de Ayuda con Select en el foro de Mysql en Foros del Web. Problema con Select Estas son las tablas: TAviso IdAlerta - Fecha - Hora - IdOcurrencia - Parcial 1 2006-03-12 13:23 2 N TSeleccion IdAlerta - ...
  #1 (permalink)  
Antiguo 15/02/2006, 08:44
 
Fecha de Ingreso: febrero-2004
Mensajes: 65
Antigüedad: 20 años, 1 mes
Puntos: 0
Ayuda con Select

Problema con Select
Estas son las tablas:


TAviso
IdAlerta - Fecha - Hora - IdOcurrencia - Parcial
1 2006-03-12 13:23 2 N


TSeleccion
IdAlerta - IdCiudadAlerta
1 1


TAvisoOcurrencia
IdOcurrencia - DescOcurrencia
1 Tormentas
2 Lluvias


TAvisoCiudad
IdCiudadAlerta - NomCiudad
1 La Plata
2 Chascomus


Mediante un formulario, selecciono las ciudades de la tabla TAvisoCiudad
y tambien selecciono la Ocurrencia de la tabla Tavisoocurrencia.
Estos se insertan en las tablas TAviso, y en Tavisoseleccion.

Hasta ahi anda todo perfecto, lo que no logro hacer es mostrarlo
mediante la generacion de un archivo PHP.

el archivo php, que se genera tendria que ser algo asi

FECHA Y HORA DE EMISION : $fecha - $hora

VALIDEZ HASTA : $horamastres

POR OCURRENCIA DE: $ocurrencia

AREA AFECTADA DELIMITADA POR : $ciudades


Necesito que me seleccione los avisos que no superen las 3 horas desde que se graban en la base

creo la variable

//hora Actual
$actual = date ("H:i",time()-10800);

// hora Actual + 3 horas
$actualmastres= date ("H:i",time());


Tengo esta idea,

$consulta = "SELECT
a.IdAlerta, a.Fecha, a.Hora, a.IdOcurrencia, a.Parcial
FROM TAviso a, TAvisoSeleccion b WHERE a.IdAlerta = b.IdAlerta and a.Hora<'$actualmastres'";


$resaviso = mysql_query($consulta,$conex);

if ($resaviso)
{
$Num_filas = mysql_num_rows($resaviso);
$Num_campos = mysql_num_fields($resaviso);



y mi problema es como relaciono estos campos, con las tablas
TAvisoOcurrencia y TAvisoCiudad ??

Tengo que haces otros select, o en un solo select puedo traer todos los datos??

Alguna ayuda,
gracias..
  #2 (permalink)  
Antiguo 15/02/2006, 09:33
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 4 meses
Puntos: 5
puedes hacerlo en un solo select, seria algo asi:
Código PHP:
//
SELECT *
FROM 
 TAviso a INNER JOIN 
(TSeleccion bTAvisoOcurrencia c,TAvisoCiudad d)
 
ON (a.IdAlerta b.IdAlerta AND a.IdOcurrencia=c.IdOcurrencia AND d.IdCiudadAlerta b.IdCiudadAlerta)
WHERE 
  
and a.Hora<'$actualmastres'"; 
ahora tambien lo puedes hacer en diferentes, todo depende de que te conviene, cya
__________________
"El Conocimiento es de todos, no solo de algunos"
  #3 (permalink)  
Antiguo 15/02/2006, 10:17
 
Fecha de Ingreso: febrero-2004
Mensajes: 65
Antigüedad: 20 años, 1 mes
Puntos: 0
Problema con Select

Perfecto, este es el archivo que se genera .php
pero tengo una duda

al ejecutar la consulta, me trae una fila, por cada ciudad seleccionada

ej.


Cantidad de filas: 3
------------------------------------------
FECHA Y HORA DE EMISION
2006-02-15
12:43:00 HOA

POR OCURRENCIA DE:Lluvias Intensas con Ráfagas
AREA AFECTADA DELIMITADA POR : 25 de Mayo

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
FECHA Y HORA DE EMISION
2006-02-15
12:43:00 HOA

POR OCURRENCIA DE:Lluvias Intensas con Ráfagas
AREA AFECTADA DELIMITADA POR : 9 de Julio

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
FECHA Y HORA DE EMISION
2006-02-15
12:43:00 HOA

POR OCURRENCIA DE:Lluvias Intensas con Ráfagas
AREA AFECTADA DELIMITADA POR : Acebal
------------------------------------------


yo lo que quiero es que me traiga 1 solo registro, dependiendo la
cantidad de ciudades elegidas,
que me muestre 1 registro con x cantidad de ciudades dependiendo
de la hora.. por ejemplo

--------------------------------------------------
FECHA Y HORA DE EMISION
2006-02-15
12:43:00 HOA

POR OCURRENCIA DE:Lluvias Intensas con Ráfagas
AREA AFECTADA DELIMITADA POR : 25 de mayo,9 de Julio, Acebal.
---------------------------------------------------
FECHA Y HORA DE EMISION
2006-02-15
13:00:00 HOA

POR OCURRENCIA DE:Lluvias Intensas con Ráfagas
AREA AFECTADA DELIMITADA POR : Rawson
---------------------------------------------------


$consulta = "SELECT * FROM
TAviso a INNER JOIN (TAvisoSeleccion b, TAvisoOcurrencia c,TAvisoCiudad d)
ON (a.IdAlerta = b.IdAlerta AND a.IdOcurrencia=c.IdOcurrencia AND d.IdCiudadAlerta = b.IdCiudadAlerta)
WHERE a.Hora<'$actualmastres'";


$resaviso = mysql_query($consulta,$conex);

if ($resaviso)
{
$Num_filas = mysql_num_rows($resaviso);
$Num_campos = mysql_num_fields($resaviso);

echo "Cantidad de filas: ".$Num_filas."<br>";
//echo "Cantidad de Campos: ".$Num_campos."<br>";

while ($fila = mysql_fetch_array($resaviso))
{

?>

<table width='85%' border='1'>
<tr>
<td><div align='center'><strong>FECHA Y HORA DE EMISION</strong></div></td>
<td><div align='center'><strong>VALIDEZ HASTA</strong></div></td>
</tr>
<tr>
<td><div align='center'><? echo $fila['Fecha']; ?></div></td>
<td> TRES (3) HORAS. posteriores a la emision</td>
</tr>

<tr>
<td><div align='center'><? echo $fila['Hora']; ?> HOA</div></td>
<td>&nbsp; </td>
</tr>
</table>
</td>
</tr>

<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>

<tr>
<td><div align='left'><b>POR OCURRENCIA DE:</b><? echo $fila['DescOcurrencia']; ?></div></td>
<td>&nbsp; </td>
</tr>

<tr>
<td>&nbsp;</td>
</tr>

<tr>
<td>&nbsp;</td>
</tr>

<tr>
<td><div align='left'><b>AREA AFECTADA DELIMITADA POR :</b> <? echo $fila['NomCiudad']; ?>
</div></td><td>&nbsp; </td>
</tr>

<tr>
<td>&nbsp;</td>
</tr>

<tr>
<td><p><b>---------------------------------------------------------------------------------------------------------------------------------------------------------------</b>-------------------------
</p>
</td>
</tr>

<tr>
<td>&nbsp;</td>
</tr>
</table>
<?


} //cierra while


} //cierra if


otra pregunta ....y solo quiero que me muestre las del dia de hoy.. pero que pasa si
se genera un aviso a las 23:00 ??

se entiende??
  #4 (permalink)  
Antiguo 15/02/2006, 13:43
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 4 meses
Puntos: 5
para obtener cuantos por hora, debes usar funciones como COUNT() y tambien la sentencia GROUP BY, seria algo mas o menos asi:
Código PHP:
//
SELECT *, count(a.hora)
FROM 
 TAviso a INNER JOIN 
(TSeleccion bTAvisoOcurrencia c,TAvisoCiudad d)
 
ON (a.IdAlerta b.IdAlerta AND a.IdOcurrencia=c.IdOcurrencia AND d.IdCiudadAlerta b.IdCiudadAlerta)
GROUP BY 
  a
.Hora 
no te entiendo muy bien lo que quieres decir con lo del dia de hoy y eso de las 23:00, haber si lo explicas un poco mejor, cya

P.D: cuando pongas codigo ponlo con tags de php ya que asi ayuda a entender
__________________
"El Conocimiento es de todos, no solo de algunos"
  #5 (permalink)  
Antiguo 16/02/2006, 06:25
 
Fecha de Ingreso: febrero-2004
Mensajes: 65
Antigüedad: 20 años, 1 mes
Puntos: 0
Ayuda con Select

me he expresado mal, lo que no se es que cuando el campo Hora,
supere las 3 horas (por ej. se graba un registro con las 12:00..)
y cuando son las 15:00 horas no lo muestre mas.

otro tema:
estuve viendo la sentencia Group By, pero no quiero agruparlo por
hora...sino que por registro me muestre fecha, hora, ocurrencia, areas
no quiero que me separe 1 registro por area...sino que si hay varias areas
me las ponga en el mismo registro.

creo que el problema es que al hacer el<?php while ($fila = mysql_fetch_array($resaviso)) ?>
va a recorrer la tabla tavisoseleccion y me va generando de a 1 registro por area , ya que se genera tantos
IdAlertas como ciudades sean elegidas.

estoy en lo correcto??
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 01:57.