PHP - Combinar HAVING con WHERE

   
Vista:

Combinar HAVING con WHERE

Publicado por siREZ (201 intervenciones) el 28/06/2016 17:58:07
Cordial saludo.
debo insertar un WHERE = '$busqueda' en la siguiente instruccion
1
2
3
4
5
6
7
8
9
10
11
$squery = 'SELECT *, (6371 * ACOS(
                                            SIN(RADIANS(lat)) 
                                            * SIN(RADIANS(' . $mi_lat . '))
                                            + COS(RADIANS(lon - ' . $mi_lon . '))
                                            * COS(RADIANS(lat)) 
                                            * COS(RADIANS(' . $mi_lat . '))
                                            )
                               ) AS distance
                     FROM ejemplo 
		     HAVING distance < '.$dista.'
                     ORDER BY distance ASC LIMIT 15;';

gracias.

siREZ
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
Imágen de perfil de xve

Combinar HAVING con WHERE

Publicado por xve (5518 intervenciones) el 28/06/2016 20:14:42
Hola Sirez, y que problema tienes?

la puedes poner entre el from y el having, no? algo así:
1
2
3
FROM ejemplo
WHERE campo=valor
HAVING distance < '.$dista.'
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

Combinar HAVING con WHERE

Publicado por siREZ (201 intervenciones) el 28/06/2016 21:33:35
Graciaspor responder.
No funciona ni así:
1
2
3
4
5
6
7
8
9
10
11
12
$squery = 'SELECT *, (6371 * ACOS(
                                            SIN(RADIANS(lat)) 
                                            * SIN(RADIANS(' . $mi_lat . '))
                                            + COS(RADIANS(lon - ' . $mi_lon . '))
                                            * COS(RADIANS(lat)) 
                                            * COS(RADIANS(' . $mi_lat . '))
                                            )
                               ) AS distance
                     FROM ejemplo 
					 WHERE seccion = '.$busqueda.'
					 HAVING distance < '.$dista.'
                     ORDER BY distance ASC LIMIT 15;';

ni así

1
2
3
4
5
6
7
8
9
10
11
12
$squery = 'SELECT *, (6371 * ACOS(
                                            SIN(RADIANS(lat)) 
                                            * SIN(RADIANS(' . $mi_lat . '))
                                            + COS(RADIANS(lon - ' . $mi_lon . '))
                                            * COS(RADIANS(lat)) 
                                            * COS(RADIANS(' . $mi_lat . '))
                                            )
                               ) AS distance
                     FROM ejemplo 
					 WHERE seccion = $busqueda
					 HAVING distance < '.$dista.'
                     ORDER BY distance ASC LIMIT 15;';

debe haber un error.

gracias.

siREZ
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 xve

Combinar HAVING con WHERE

Publicado por xve (5518 intervenciones) el 28/06/2016 22:26:03
Hola Sirez, yo lo veo correctamente...

que error te da?
Quitando la linea del having te funciona?
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

Combinar HAVING con WHERE

Publicado por siREZ (201 intervenciones) el 28/06/2016 22:29:01
Hola.
la pagina se queda en blanco, no muestra nada.
con ninguna de las dos formas-
si excluyo el WHERE si me muestra el mapa de google con mis marcadores

gracias.

siREZ
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 xve

Combinar HAVING con WHERE

Publicado por xve (5518 intervenciones) el 29/06/2016 08:13:34
que valores te devuelve distance cuando quitas en having?
es inferior al valor de la variable $dista?

Si no te da ningun error entiendo que funciona correctamente, pero no devuelve resultados porque no se cumple la condición, no?
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 VRM

Combinar HAVING con WHERE

Publicado por VRM (171 intervenciones) el 29/06/2016 08:38:43
Hola:

No sé que valores tiene $busqueda (que aparece en WHERE) pero si no son numéricos deberían estar entre comillas.

Saludos de Víctor.-
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

Combinar HAVING con WHERE

Publicado por si (201 intervenciones) el 29/06/2016 13:29:40
Hola.
La condicion de distancia se cumple. $dista es 2 o 3 millas dependiendo de donde venga.
$busqueda es un POST y vale droguerias, ferreterias, etc. No es numerico
el codigo completo es:
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
$busqueda = $_POST['busca'];
mysql_select_db($database_myconexion, $myconexion);
			$squery = 'SELECT *, (6371 * ACOS(
                                            SIN(RADIANS(lat)) 
                                            * SIN(RADIANS(' . $mi_lat . '))
                                            + COS(RADIANS(lon - ' . $mi_lon . '))
                                            * COS(RADIANS(lat)) 
                                            * COS(RADIANS(' . $mi_lat . '))
                                            )
                               ) AS distance
                     FROM ejemplo 
					 HAVING distance < '.$dista.'
                     ORDER BY distance ASC LIMIT 15;';
			$iquery=mysql_query($squery,$ilink);
			if ($iquery>0) {
  				$irow=0;
   				$ilastrow=mysql_num_rows($iquery);
   				while ($irow<$ilastrow) {
					$_SESSION['zoom'] = 14;
					$raz = mysql_result($iquery,$irow,(razonsocial));
					$dir = mysql_result($iquery,$irow,(direccion));
					@$ciu= mysql_result($iquery,$irow,(ciudad));
					@$sec= mysql_result($iquery,$irow,(seccion));
					@$lon= mysql_result($iquery,$irow,(lon));
					@$lat= mysql_result($iquery,$irow,(lat));
					@$dis= mysql_result($iquery,$irow,(distance));
					$dis = intval($dis * 1000)." Mtrs Lineales";
					@$id= mysql_result($iquery,$irow,(id));
					echo "$id $irow<br>$raz<br>$sec<br>$dis<br>==============<br>";
 
					$irow++;
 
	   }
}
Resultados:

Negocio 1
Ferreterias
1,340 mtrs
==================
Negocio 2
Ferreterias
1,459 Mtrs
==================
etc hasta 15 Negocios ordenados por distancice

pero así mo Muestra Nada:
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
include('../Connections con la BBDD/coneccion recorrer datos averiguo.php');
			mysql_select_db($database_myconexion, $myconexion);
			$squery = 'SELECT *, (6371 * ACOS(
                                            SIN(RADIANS(lat)) 
                                            * SIN(RADIANS(' . $mi_lat . '))
                                            + COS(RADIANS(lon - ' . $mi_lon . '))
                                            * COS(RADIANS(lat)) 
                                            * COS(RADIANS(' . $mi_lat . '))
                                            )
                               ) AS distance
                     FROM ejemplo 
					 WHERE seccion = '.$busqueda.'
					 HAVING distance < '.$dista.'
                     ORDER BY distance ASC LIMIT 15;';
			$iquery=mysql_query($squery,$ilink);
			if ($iquery>0) {
  				$irow=0;
   				$ilastrow=mysql_num_rows($iquery);
   				while ($irow<$ilastrow) {
					$_SESSION['zoom'] = 14;
					$raz = mysql_result($iquery,$irow,(razonsocial));
					$dir = mysql_result($iquery,$irow,(direccion));
					@$ciu= mysql_result($iquery,$irow,(ciudad));
					@$sec= mysql_result($iquery,$irow,(seccion));
					@$lon= mysql_result($iquery,$irow,(lon));
					@$lat= mysql_result($iquery,$irow,(lat));
					@$dis= mysql_result($iquery,$irow,(distance));
					$dis = intval($dis * 1000)." Mtrs Lineales";
					@$id= mysql_result($iquery,$irow,(id));
					echo "$id $irow<br>$raz<br>$sec<br>$dis<br>==============<br>";
 
					$irow++;
 
	   }
}

gracias por su paciencia y colaboración.

siREZ
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 VRM

Combinar HAVING con WHERE

Publicado por VRM (171 intervenciones) el 29/06/2016 21:26:17
Hola

Mira esta página

http://www.mysqlya.com.ar/temarios/descripcion.php?cod=35&punto=36

Saludos de Víctor .-
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