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

Problema con consulta

Estas en el tema de Problema con consulta en el foro de Mysql en Foros del Web. Hola a todos, tengo una consulta así: Código: SELECT DISTINCT tabla1.*, ciudades.Ciudad, provincias.Provincia, paises.Pais, tabla2.nombre AS 'rnom' FROM tabla1, zonas, ciudades, provincias, paises, tabla2 WHERE ...
  #1 (permalink)  
Antiguo 28/08/2008, 08:21
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 8 meses
Puntos: 22
Exclamación Problema con consulta

Hola a todos, tengo una consulta así:

Código:
SELECT DISTINCT tabla1.*, ciudades.Ciudad, provincias.Provincia, paises.Pais, tabla2.nombre AS 'rnom'
FROM tabla1, zonas, ciudades, provincias, paises, tabla2
WHERE (
tabla1.a >0
AND tabla1.a = tabla2.id
)
OR (
tabla1.b >0
AND (
zonas.id = tabla1.b
AND ciudades.id = zonas.ciudad
AND provincias.id = zonas.provincia
AND paises.id = zonas.pais
)
)
GROUP BY tabla1.id
En donde: tabla1 es una lista donde cada registro puede tener un valor en a que hace referencia a un registro de tabla2 o un valor en b que refiere a un registro en zonas.

Ese registro en zonas a su vez contiene un id de una ciudad, un pais y una provincia que se encuentran en las respectivas tablas.

Yo lo que quiero es traer con esa sola consulta, todos los campos de tabla1 y un campo de tabla2 o ciudad provincia y país, según corresponda.

El problema es que con el group by, el servidor literalmente muere, y sin el group by me trae cada registro de tabla1 tantas veces como registros en tabla2 hay, uno por cada registro de tabla2.

¿Cómo puedo hacer funcionar esa consulta?

Muchas gracias.
Saludos.
  #2 (permalink)  
Antiguo 28/08/2008, 09:42
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 2 meses
Puntos: 45
Respuesta: Problema con consulta

Estas realizando mal la consulta.
Debes de relacionar primero las tablas con JOINs antes de realizar los filtros.

Saludos!
__________________
"El conocimiento nos hace responsables."
twitter: @benjamingb
blog personal: http://codigolinea.com
ZF Manual en español http://manual.zfdes.com
  #3 (permalink)  
Antiguo 28/08/2008, 10:08
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 8 meses
Puntos: 22
Respuesta: Problema con consulta

Muchísimas gracias!

Me quedó así:

Código:
select tabla1.*,tabla2.nombre as 'rnom',ciudades.ciudad,provincias.provincia,paises.pais from tabla1 left join tabla2 on tabla1.a=tabla2.id left join zonas on tabla1.b=zonas.id left join ciudades on ciudades.id=zonas.ciudad left join provincias on provincias.id=zonas.provincia left join paises on paises.id=zonas.pais
No se me había ocurrido probar eso.
Igual no termino de entender la lógica del join .. eso lo saqué más por prueba y error leyendo la documentación de mysql pero no me explicó nada.

Saludos.
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 06:26.