SQL - Consulta INNER JOIN repite resultados :(

 
Vista:

Consulta INNER JOIN repite resultados :(

Publicado por Sheyla Luján Alberiz (2 intervenciones) el 14/04/2011 09:53:26
Hola amigos, estoy desarrollando un software de gestión inmobiliaria , y hay un momento del aplicativo en el que cruzo las DEMANDAS de los clientes con los INMUEBLES que tenemos, asi se muestran caracteristicas coincidentes.

El caso es que la consulta parece ir bien , pero me duplica los resultados coincidentes.

He intentando usar DISTINC para omitir repeticiones pero debo de usarlo mal .

Os rogaria si disponeis de unos minutitos que mireis la consulta y me digais si algo esta mal o bien me indiqueis como eliminar duplicados.

Un atento saludo

CONSULTA (os la divido en 2 selects para que sea mas clara:

'Esta es la parte DISTINC que agregué delante la idea es que no repita el ID de la tabal inmuebles , asi no duplicaria resultados:

xsql = "select DISTINC id,direccion,numero,piso,puerta,tel1 from ("

Esta es la SQL standard con el INNER JOIN que repite resultados:

xsql = "select inmuebles.id,inmuebles.direccion,inmuebles.numero,inmuebles.piso,inmuebles.puerta,inmuebles.tel1 from inmuebles inner join pedidos on inmuebles.m2cons>=pedidos.m2cons AND inmuebles.nhabitaciones>=pedidos.dormitoriosmin) )


TODA JUNTA: select DISTINC id,direccion,numero,piso,puerta,tel1 from (select inmuebles.id,inmuebles.direccion,inmuebles.numero,inmuebles.piso,inmuebles.puerta,inmuebles.tel1 from inmuebles inner join pedidos on inmuebles.m2cons>=pedidos.m2cons AND inmuebles.nhabitaciones>=pedidos.dormitoriosmin))

Aun asi sigue repitiendo entradas de la tabla inmuebles.

Help me please!!!

Att. Sheyla

:__/
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
Val: 135
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Consulta INNER JOIN repite resultados :(

Publicado por xve (284 intervenciones) el 14/04/2011 17:19:44
Hola Sheyla, no se muy bien que campo no debe de repetirse, pero te puede servir la clausula GROUP BY ?

Según la ayuda, estas dos "select" devuelve los mismos resultados:
SELECT DISTINCT c1, c2, c3 FROM t1
WHERE c1 > const;

SELECT c1, c2, c3 FROM t1
WHERE c1 > const GROUP BY c1, c2, c3;

Si nos puedes comentar...
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Consulta INNER JOIN repite resultados :(

Publicado por Leonardo Josué (1173 intervenciones) el 14/04/2011 17:28:17
Hola Sheyla:

el que una consulta en donde haces algún INNER JOIN te repita registros puede deberse a que no estás definiendo todos los campos llave entre las tablas y por lo tanto se está realizando algún tipo de producto cartesiano entre tus tablas. La relación puede ser física (es decir que exista una FK entre las tablas) o lógica, es decir que aunque no esté definida una FK tengas que forzar la relación.

No nos comentas cual es la estructura de tus tablas, por lo que es complicado tratar de identificar el problema. En lo particular, cuando me ocurre esto, generalmente hago un Select * para que listar TODOS LOS CAMPOS DE TODAS LAS TABLAS, de tal manera puedo revisar qué información es la que está duplicada. Prueba esta solución, ya que el problema puede estar con algún campo que no incluyas en tu select. Si continuas con problema sería conveniente que nos dijeras cual es la estructura de tus tablas y que nos pusieras algunos datos de ejemplo, para tratar de replicar el problema en nuestros equipos.

Saludos
Leo.
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

Consulta INNER JOIN repite resultados :(

Publicado por Sheyla Luján Alberiz (2 intervenciones) el 14/04/2011 17:54:33
Dicho de otra manera haber si estoy formulando mal la SQL

Yo tengo unos pedidos que demandan inmuebles . y una de sus caracteristicas son los metros cuadrados minimos que demanda el cliente.

Por otro lado tengo un registro de inmuebles con su medida en metros cuadrados.

La idea es cruzar la tabla de pedidos con la de inmuebles para que me muestre los inmuebles que coinciden y que cumplen la norma de que el inmueble tiene = o mas metros que lo que me piden en el pedido

Inmuebles:: Campo ID, Campo m2
Pedidos:: Campo m2
Pregunta: que inmuebles coinciden en cuanto a m2 con los pedidos ?

Mi idea ha sido esta:

select DISTINC inmuebles.id,inmuebles.m2 from inmuebles inner join pedidos on inmuebles.m2>=pedidos.m2

Cruza bien pero duplica muchas veces los resultados de las coincidencias.

Estoy ta desesperada que optare por tabla temporal y suprimir repetidos por codigo . Lento pero eficaz. a no ser que tengais alguna idea :___(

.Gracias de antemano
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