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

necesito ayuda con un query

Estas en el tema de necesito ayuda con un query en el foro de Mysql en Foros del Web. Gente: tengo que hacer una consulta en la cual se muestre la información del comprador y del vendedor de un inmueble. Ambos se obtienen un ...
  #1 (permalink)  
Antiguo 05/05/2010, 08:46
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 19 años, 6 meses
Puntos: 1
necesito ayuda con un query

Gente: tengo que hacer una consulta en la cual se muestre la información del comprador y del vendedor de un inmueble. Ambos se obtienen un de una tabla, por un número de id, pero se me mezclan:

SELECT *, PRO.codigo as pcod, CAN.apellido as comprador, CAN.nombre as cnombre, PRO.id as idi from propiedades PRO

inner join consignatarios CON
on PRO.id_consignatario=CON.id

inner join consignatarios CAN
on PRO.id_comprador=CAN.id

inner join catastro CAT
on PRO.id=CAT.id_propiedad
where PRO.estado<>'activo'

obviamente algo mal hago al hacer el inner join consignatarios dos veces, probé asignándole distinto alias (CON y CAN) pero aún así se mezcla...

para ambos clientes me devuelve el mismo valor, el id del último (CAN).

alguién puede decirme cómo resolverlo?

muchas gracias.
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #2 (permalink)  
Antiguo 05/05/2010, 08:51
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: necesito ayuda con un query

Cita:
Gente: tengo que hacer una consulta en la cual se muestre la información del comprador y del vendedor de un inmueble. Ambos se obtienen un de una tabla, por un número de id, pero se me mezclan:
No entendí bien esta parte.

describe la estructura de las tablas relacionadas con sus campos y la salida que esperas.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 05/05/2010, 14:01
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 19 años, 6 meses
Puntos: 1
Respuesta: necesito ayuda con un query

huesos52, gracias por responder.
ahí va:
estructura de la tabla consignatarios:

Código:
CREATE TABLE IF NOT EXISTS `consignatarios` (
  `id` int(8) NOT NULL AUTO_INCREMENT,
  `apellido` varchar(255) COLLATE utf8_spanish_ci NOT NULL,
  `nombre` varchar(255) COLLATE utf8_spanish_ci NOT NULL,
  `direccion` varchar(255) COLLATE utf8_spanish_ci NOT NULL,
  `ciudad` varchar(255) COLLATE utf8_spanish_ci NOT NULL,
  `cod_post` varchar(255) COLLATE utf8_spanish_ci NOT NULL,
  `telefono` varchar(255) COLLATE utf8_spanish_ci NOT NULL,
  `celular` varchar(255) COLLATE utf8_spanish_ci NOT NULL,
  `mail` varchar(255) COLLATE utf8_spanish_ci NOT NULL,
  `dni` varchar(255) COLLATE utf8_spanish_ci NOT NULL,
  `cuit` varchar(255) COLLATE utf8_spanish_ci NOT NULL,
  `estado_civil` varchar(255) COLLATE utf8_spanish_ci NOT NULL,
  `fecha_nacimiento` date NOT NULL,
  `conyuge` varchar(255) COLLATE utf8_spanish_ci NOT NULL,
  `padre` varchar(255) COLLATE utf8_spanish_ci NOT NULL,
  `madre` varchar(255) COLLATE utf8_spanish_ci NOT NULL,
  `codigo` varchar(255) COLLATE utf8_spanish_ci NOT NULL,
  `comentarios` text COLLATE utf8_spanish_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci AUTO_INCREMENT=5 ;
estructura de la tabla propiedades:
Código:
CREATE TABLE IF NOT EXISTS `propiedades` (
  `id` int(8) NOT NULL AUTO_INCREMENT,
  `codigo` varchar(255) COLLATE utf8_spanish_ci NOT NULL,
  `carpeta` varchar(255) COLLATE utf8_spanish_ci NOT NULL,
  `tipo` varchar(255) COLLATE utf8_spanish_ci NOT NULL,
  `operacion` varchar(255) COLLATE utf8_spanish_ci NOT NULL,
  `id_consignatario` int(8) NOT NULL,
  `precio_pesos` float(10,2) NOT NULL,
  `precio_dolares` float(10,2) NOT NULL,
  `condiciones` varchar(255) COLLATE utf8_spanish_ci NOT NULL,
  `antecedentes` text COLLATE utf8_spanish_ci NOT NULL,
  `fecha_in` date NOT NULL,
  `fecha_ven` date NOT NULL,
  `estado` varchar(23) COLLATE utf8_spanish_ci NOT NULL DEFAULT 'activo',
  `web` varchar(25) COLLATE utf8_spanish_ci NOT NULL DEFAULT 'no',
  `id_comprador` int(8) NOT NULL,
  `fecha_operacion` date NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci AUTO_INCREMENT=16 ;
va a haber un "consignatario" que trae su propiedad para que sea vendida (es el id_consignatario de la tabla propiedades) y luego, vendrá otro cliente (que también lo guardo en la tabla consignatarios) que va a comprar ese inmueble (y ese número se guardará en id_comprador). Yo quiero que eun listado me muestre tanto quién compró como quién vendió el inmueble.

Espero haber sido más claro ahora, a ver si me pueden ayudar.

gracias
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #4 (permalink)  
Antiguo 05/05/2010, 14:07
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: necesito ayuda con un query

Si no estoy mal, en tu consulta inicial estas trocando los campos de una tabla con otra.
Sería así:
Código SQL:
Ver original
  1. SELECT *,
  2. PRO.codigo AS pcod,
  3. CAN.apellido AS comprador,
  4.  CAN.nombre AS cnombre,
  5. PRO.id AS idi
  6. FROM
  7. propiedades PRO
  8. INNER JOIN
  9. consignatarios CON
  10. ON CON.id_consignatario=PRO.id
  11. INNER JOIN
  12. consignatarios CAN
  13. ON CAN.id_comprador=PRO.id
  14. INNER JOIN
  15. catastro CAT
  16. ON PRO.id=CAT.id_propiedad
  17. WHERE PRO.estado<>'activo'

Nos cuentas como te va.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 05/05/2010, 14:15
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 19 años, 6 meses
Puntos: 1
Respuesta: necesito ayuda con un query

Huesos, no funcionó.
Incluso le hice dos modificaciones porque no me reconocía los campos, pero me devuelve, igual que mi consulta, el mismo id para el vendedor y para el comprador.
así me quedó
Código:
SELECT *  , PRO.codigo AS pcod, CAN.apellido AS comprador, CAN.nombre AS cnombre, PRO.id AS idi
FROM propiedades PRO
INNER JOIN consignatarios CON ON CON.id = PRO.id_consignatario
INNER JOIN consignatarios CAN ON CAN.id = PRO.id_comprador
INNER JOIN catastro CAT ON PRO.id = CAT.id_propiedad
WHERE PRO.estado <> 'activo'
¿alguna pista?
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #6 (permalink)  
Antiguo 05/05/2010, 14:19
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: necesito ayuda con un query

Tomemos el problema por partes.
Que campos quieres mostrar en la consulta?
Ese * te indica que campos? Los de que tablas?

Selecciona los campos que quieres mostrar y ponlos manualmente en la consulta sin utilizar comodines. La parte de los INNER JOIN no les veo problema.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 05/05/2010, 14:25
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 19 años, 6 meses
Puntos: 1
Respuesta: necesito ayuda con un query

Excelente! El comomdín estaba haciendo estragos: estaba bien mi consulta inicial, si quitaba el comodín y ponía todos los campos.
finalmente me quedó así
Código:
SELECT PRO.carpeta, PRO.operacion, PRO.tipo, CAT.barrio, PRO.precio_pesos, PRO.precio_dolares, PRO.fecha_operacion, PRO.codigo AS pcod, CAN.apellido AS comprador, CAN.nombre AS cnombre, CON.nombre, CON.apellido, PRO.id AS idi
FROM propiedades PRO
INNER JOIN consignatarios CON ON CON.id = PRO.id_consignatario
INNER JOIN consignatarios CAN ON CAN.id = PRO.id_comprador
INNER JOIN catastro CAT ON PRO.id = CAT.id_propiedad
WHERE PRO.estado <> 'activo'

Muchas gracias Huesos
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar

Etiquetas: query
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 11:40.