Llego la hora de especificar:
No voy a hacer 1 solo tipo de búsqueda.. el usuario podra hacer 4 tipos de busqueda:
la tabla en realidad, no tiene una "DIRECCION" sino que tiene 2 campos: CALLE y NUMERO (numero, es el numero de la calle.. como por ejemplo: Independencia 710).
También podra buscar por TIPOS de locales, tambien podra por NOMBRE DE LOCAL, y por ultimo, por servicios ofrecidos (aunque, de ésto no les he hablado.. ya que SI O SI tengo que hacer 2 consultas sql)
Supongamos que estamos haciendo la busqueda por DIRECCION..
El usuario podrá ingresar 3 valores:
Calle, Numero "DESDE" y numero "HASTA".. para buscar todos los locales en la calle Independencia, desde la altura 300 al 1000 (supongamos)
Mi codigo es éste:
$res = mysql_query("SELECT l.*, t.* FROM locales l INNER JOIN tipos t ON l.tipo=t.id WHERE l.calle='Independencia' AND l.numero > '300' and l.numero < '1000'"); echo "Resultados:<br />";
echo "<hr /><br />Nombre del local: " . $row['nombre'] . ", Tipo: " . $row['tipo'] . ", Direccion: " . $row['calle'] . " " . $row['numero'];
}
(suponemos que donde puse el dato: INDEPEDNENCIA y 300 y 1000, ahí estarán tomados los valores desde las variables GET del la URL
Y los datos de mi base de datos son:
TABLAS:
mails: TABLA DE MAILS
mail(varchar:35) Los Mails de los registrantes
locales: TABLA DE LOCALES
id(int:4) (primaria) Identificador
nombre(varchar:50) Nombre del Local
tipo(int:2) (indice) Identificador Tipo de Local
calle(varchar:100) Direccion del local
numero(int:4) Direccion del local
servicios(varchar:50) Numeros de los Servicios prestados
telefono(varchar:15) Telefono del local
votos (int:4) Total de votos recibidos
total(int:5) Suma del total de los votos
observacion(varchar:120) Observaciones nuestras
tipos: TABLA DE TIPOS DE LOCALES
id(int:2) (primaria) Identificador
tipo(varchar:30) Tipo de Locales: Delivery, Bar, etc
servicios: TABLA DE SERVICIOS
id(int:2) (primaria) Identificador
tipo(varchar:30) Tipo de servicio: Gaseosas, Alcohol, Hospedaje, Delivery, etc
opiniones: TABLA DE OPINIONES
id(int:4) (indice) Identificador
texto(varchar:1000) Texto de la opinion
La web que es?
La web tendrá todos los datos de todos los tipos de locales que hay en MI BARRIO de MI CIUDAD...
Por lo que la gente que quiera buscar que locales hay en X calle, podra hacerlo buscando por direccion..
Si quieren bsucar donde esta el local: "Don Juan el Pizzero" podran hacerlo bsucando por NOMBRE
Si quieren buscar donde venden Pizzas y Gaseosas, lo harán con otro metodo (el valor SERVICIOS dentro de LOCALES, tendrá separado por comas "," cada tipo de servicio que ofrece.. pero esos valores, no serán los servicios en SI, sino, los numeros de los servicios que tambien estan identificados en la tabla SERVICIOS.. sería LO MISMO que pasa en éste caso..)
Ahora bien.. Sabiendo que hay 4 tipos de COnsultas.. Donde me conviene poner los Index? yo lo puse en TIPO.. porque supongo que lo que mas se va a buscar es el "TIPO" de local.. porque la mayoria (supongo) buscará Deliverys... o tambien puede que busquen por servicios.. eso lo haré con una consulta que mire si dentro de SERVICIOS está el numero "4" (supongamos que 4 es: EMPANADAS, y el usuario buscaba empanadas)...
Bien.. Ahí esta toda la explicacion...
Tifa, vos me decis que haga:
SELECT l.*, t.* FROM locales l INNER JOIN tipos t ON l.tipo=t.id WHERE l.tipo IN(SELECT tipo FROM tabla WHERE calle = "independencia") AND t.id IN( SELECT tipo FROM tabla WHERE calle = "independencia")
La verdad, no logré ententer eso.. que se supone que hará?