Foros del Web » Programando para Internet » PHP »

Ayuda para consulta avanzada en 3 tablas

Estas en el tema de Ayuda para consulta avanzada en 3 tablas en el foro de PHP en Foros del Web. Hola... Primero les pongo codigo y luego les comento mis dudas. BD: CREATE TABLE `inmobiliarias` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `id_vendedor` ...
  #1 (permalink)  
Antiguo 11/11/2007, 17:23
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 17 años
Puntos: 0
Ayuda para consulta avanzada en 3 tablas

Hola...

Primero les pongo codigo y luego les comento mis dudas.

BD:

CREATE TABLE `inmobiliarias` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`id_vendedor` VARCHAR( 50 ) NOT NULL ,
`contacto` VARCHAR( 250 ) NOT NULL ,
`empresa` VARCHAR( 250 ) NOT NULL ,
`direccion` VARCHAR( 250 ) NOT NULL ,
`telefono` VARCHAR( 150 ) NOT NULL ,
`movil` VARCHAR( 150 ) NOT NULL ,
`email` VARCHAR( 250 ) NOT NULL ,
`web` VARCHAR( 250 ) NOT NULL ,
`archivo_binario` MEDIUMBLOB NOT NULL ,
`archivo_nombre` VARCHAR( 250 ) NOT NULL ,
`archivo_peso` VARCHAR( 50 ) NOT NULL ,
`archivo_tipo` VARCHAR( 50 ) NOT NULL
) ENGINE = MYISAM ;



CREATE TABLE `propiedades` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`id_vendedor` VARCHAR( 50 ) NOT NULL ,
`id_propiedad` VARCHAR( 50 ) NOT NULL ,
`zona` VARCHAR( 150 ) NOT NULL ,
`ubicacion` VARCHAR( 250 ) NOT NULL ,
`condicion` VARCHAR( 150 ) NOT NULL ,
`antiguedad` VARCHAR( 50 ) NOT NULL ,
`metros` VARCHAR( 50 ) NOT NULL ,
`alcobas` VARCHAR( 50 ) NOT NULL ,
`banos` VARCHAR( 50 ) NOT NULL ,
`parqueaderos` VARCHAR( 50 ) NOT NULL ,
`estrato` VARCHAR( 50 ) NOT NULL ,
`lineas` VARCHAR( 50 ) NOT NULL ,
`tv` VARCHAR( 50 ) NOT NULL ,
`info` MEDIUMTEXT NOT NULL,
`cerrado` VARCHAR( 50 ) NOT NULL ,
`vigilancia` VARCHAR( 50 ) NOT NULL ,
`cubierto` VARCHAR( 50 ) NOT NULL ,
`visitantes` VARCHAR( 50 ) NOT NULL ,
`comunes` VARCHAR( 50 ) NOT NULL ,
`ninos` VARCHAR( 50 ) NOT NULL ,
`verdes` VARCHAR( 50 ) NOT NULL ,
`principal` VARCHAR( 50 ) NOT NULL ,
`colegios` VARCHAR( 50 ) NOT NULL ,
`transporte` VARCHAR( 50 ) NOT NULL ,
`negocio` VARCHAR( 150 ) NOT NULL ,
`inmueble` VARCHAR( 150 ) NOT NULL ,
`precio` VARCHAR( 150 ) NOT NULL ,
`intro` MEDIUMTEXT NOT NULL
) ENGINE = MYISAM ;



CREATE TABLE `imagenes` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`id_propiedad` VARCHAR( 50 ) NOT NULL ,
`archivo_binario` MEDIUMBLOB NOT NULL ,
`archivo_nombre` VARCHAR( 250 ) NOT NULL ,
`archivo_peso` VARCHAR( 50 ) NOT NULL ,
`archivo_tipo` VARCHAR( 50 ) NOT NULL
) ENGINE = MYISAM ;
  #2 (permalink)  
Antiguo 11/11/2007, 17:33
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 17 años
Puntos: 0
Re: Ayuda para consulta avanzada en 3 tablas

Enlace para ver detalles de alguna propiedad en concreto:

Código PHP:
<a href='detalles_propiedad.php?id_propiedad=$row[id_propiedad]'>Ver detalles del Inmueble.</a
Detalles Propiedad:

Código PHP:
<? 
include("connect.php");

if (isset(
$_GET['id_propiedad'])){

$sql="SELECT * FROM inmobiliarias, propiedades, imagenes WHERE inmobiliarias.id_vendedor = propiedades.id_vendedor AND propiedades.id_propiedad = imagenes.id_propiedad";  
$result=mysql_query($sql); 

while(
$row=mysql_fetch_assoc($result)) 
{

echo 
"<table width=350 align=center>";
echo 
"<tr>";
echo 
"<td align=left>";
echo 
"<font class=titulo_codigo>CARACTERISTICAS DEL INMUEBLE</font>";
echo 
"<hr size=1 width=350px noshade='noshade'>";
echo 
"Zona: ".$row[zona]."<br>";
echo 
"Dirección: ".$row[direccion]."<br>";
echo 
"Estrato: ".$row[estrato]."<br>";
echo 
"Condición: ".$row[condicion]."<br><br>";
echo 
"Antiguedad: ".$row[antiguedad]." años<br>";
echo 
"Tamaño: ".$row[metros]." metros cuadrados<br>";
echo 
"Alcobas: ".$row[alcobas]."<br>";
echo 
"Baños: ".$row[banos]."<br>";
echo 
"Parqueaderos: ".$row[parqueaderos]."<br>";
echo 
"Líneas telefónicas: ".$row[lineas]."<br>";
echo 
"Sistema de Cable TV: ".$row[tv]."<br><br>";
echo 
"Información adicional:<br>".$row[info]."<br><br>";
echo 
"<font class=titulo_codigo>EXTRAS</font>";
echo 
"<hr size=1 width=350px noshade='noshade'>";
echo 
"Conjunto cerrado: ".$row[cerrado]."<br>";
echo 
"Vigilancia 24 Hrs.: ".$row[vigilancia]."<br>";
echo 
"Parqueadero cubierto: ".$row[cubierto]."<br>";
echo 
"Parqueadero para visitantes: ".$row[visitantes]."<br>";
echo 
"Areas comunes: ".$row[comunes]."<br>";
echo 
"Zona para niños: ".$row[ninos]."<br>";
echo 
"Areas verdes: ".$row[verdes]."<br>";
echo 
"Cercano a vía principal: ".$row[principal]."<br>";
echo 
"Cercano a colegios: ".$row[colegios]."<br>";
echo 
"Facilidad de transporte: ".$row[transporte]."<br><br>";
echo 
"<font class=titulo_codigo>INFORMACION DE NEGOCIO</font>";
echo 
"<hr size=1 width=350px noshade='noshade'>";
echo 
"Tipo de negocio: ".$row[negocio]."<br>";
echo 
"Tipo de inmueble: ".$row[inmueble]."<br>";
echo 
"Precio en pesos ($): ".$row[precio]."<br><br><br>";
echo 
"<br><br><font class=titulo_index>".$row[empresa]."</font><br><br>";
echo 
"Nombre de Contacto: ".$row[contacto]."<br>";
echo 
"Dirección: ".$row[direccion]."<br>";
echo 
"Teléfono: ".$row[telefono]."<br>";
echo 
"Móvil: ".$row[movil]."<br><br>";
echo 
"E-mail: <a href='mailto:".$row[email]."'>".$row[email]."</a><br>";
echo 
"Sitio web: <a href=".$row[web].">".$row[web]."</a><br><br><br>";
echo 
"</td></tr></table>";
}
}
?>
Ahora las dudas...

Asi como esta el codigo me muestra todo lo que necesito PERO no me muestra solo los datos de la propiedad solicitada por el enlace, sino que me muestra todo lo que esta en la Base de Datos.

Obviamente el asunto esta en la consulta pero no he logrado entender bien (ya me repase el manual de MySQL y las FAQ del foro) como lograr una consulta a 3 tablas.

Otra cosa, la consulta es a 3 tablas porque aparte de lo que ya muestro me faltaria incluir las miniaturas de las imagenes que tenga dicha propiedad. Ni siquiera he pasado a esa parte hasta que no domine bien la consulta basica (que me muestre solo la propiedad requerida). Luego le anexare las imagenes y de seguro necesitare algo de colaboracion.
  #3 (permalink)  
Antiguo 12/11/2007, 03:24
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.990
Antigüedad: 14 años, 10 meses
Puntos: 80
Re: Ayuda para consulta avanzada en 3 tablas

Pero en tu sql no estas buscando una propiedad.
Código PHP:
$sql "SELECT * 
        FROM inmobiliarias, propiedades, imagenes 
        WHERE inmobiliarias.id_vendedor = propiedades.id_vendedor 
        AND propiedades.id_propiedad = imagenes.id_propiedad"

Deberias hacerlo asi:
Código PHP:
$idProp $_GET['id_propiedad'];
$sql "SELECT * 
        FROM inmobiliarias, propiedades, imagenes 
        WHERE inmobiliarias.id_vendedor = propiedades.id_vendedor 
        AND propiedades.id_propiedad = imagenes.id_propiedad
        AND propiedades.id_propiedad = "
.$idProp
Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #4 (permalink)  
Antiguo 12/11/2007, 04:09
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 17 años
Puntos: 0
Re: Ayuda para consulta avanzada en 3 tablas

Hola Marvin, gracias por contestar.

Probe lo que me indicas y me arroja este error:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\bogota\propiedades_detalle.php on line 13
  #5 (permalink)  
Antiguo 12/11/2007, 11:36
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.990
Antigüedad: 14 años, 10 meses
Puntos: 80
Re: Ayuda para consulta avanzada en 3 tablas

Y como lo pusiste ??
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #6 (permalink)  
Antiguo 12/11/2007, 20:37
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 17 años
Puntos: 0
Re: Ayuda para consulta avanzada en 3 tablas

Hola Marvin

Lo puse tal cual me lo diste.

Luego hice unos cambios y funciona ya perfecto:

Código PHP:
<?
include("connect.php");

if (isset(
$_GET['id_propiedad'])){

$sql "SELECT *
               FROM inmobiliarias, propiedades, imagenes
               WHERE inmobiliarias.id_vendedor = propiedades.id_vendedor
               AND propiedades.id_propiedad = imagenes.id_propiedad
               AND propiedades.id_propiedad = '"
.$_GET['id_propiedad']."' LIMIT 1";
                 
$result=mysql_query($sql); 

while(
$row=mysql_fetch_assoc($result)) 
{
//...
?>
Muchas gracias!!!
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:16.