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

Evitar repetir registros INNER JOIN

Estas en el tema de Evitar repetir registros INNER JOIN en el foro de Mysql en Foros del Web. Hola amigos. Resulta que tengo tres tablas y las uno mediante INNER JOIN. de la siguiente manera: Cita: select sucursal,direccion,colonia,servicios from tblsucursal INNER JOIN tblserxSuc ...
  #1 (permalink)  
Antiguo 07/08/2010, 13:10
 
Fecha de Ingreso: diciembre-2005
Mensajes: 201
Antigüedad: 18 años, 4 meses
Puntos: 2
Pregunta Evitar repetir registros INNER JOIN

Hola amigos.

Resulta que tengo tres tablas y las uno mediante INNER JOIN. de la siguiente manera:

Cita:
select sucursal,direccion,colonia,servicios from tblsucursal INNER JOIN tblserxSuc ON tblsucursal.id_sucursal = tblserxsuc.id_sucursal
INNER JOIN tblservicio ON tblservicio.id_servicio = tblserxsuc.id_servicio
where tblsucursal.id_municipio=1
el detalle aqui es que cuando ejecuto la sentencia me repite el nombre de la sucursal segun tenga asignado los diferentes servicios.

es decir si la sucursal1 tiene 5 servicios me repite 5 veces el nombre de la sucursal con los diferentes servicios.

cabe mencionar que la tabla tblservicios es mi catalogo de servicios y el la tabla tblserxsuc es donde tengo los ids de sucursal y servicios.

no se si exista alguna manera de evitar que se repitan los nombres de sucursal.
solo que me muestre una vez la sucursal y los servicios que tenga asignados. es to lo quiero para montarlo a un sitio web donde uso PHP pero por PHP no he sabido como hacerle por eso estoy aqui en foros de mysql
  #2 (permalink)  
Antiguo 09/08/2010, 18:15
 
Fecha de Ingreso: mayo-2008
Mensajes: 117
Antigüedad: 16 años
Puntos: 8
Respuesta: Evitar repetir registros INNER JOIN

prueva a poner alias a los campos... igual dices que se te repite por que la consulta devuelve de las 3 tablas los campos sucursal,direccion,colonia,servicios

Código:
Select a.sucursal, b.direccion... from tabla1 a inner join tabla2 b ...
  #3 (permalink)  
Antiguo 09/08/2010, 19:52
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Evitar repetir registros INNER JOIN

bueno, si pruebas con distinct? o si le agregas un group by (sucursal) a la consulta?
si ninguna de esas 2 da con el asunto, entonces puedes probar 2 cosas mas usando php

0. hacer 2 consultas, la primera que consulte las sucursales, y en el while que recorre para dibujar la sucursal, otra consulta y otro while para que busque en el join pero por la sucursal actual que viene de la primera consulta

1. mas complicado, pero posible, dejar solo la consulta del join, y crear en el while un arreglo que guarde por cada sucursal varias posiciones del resto de datos, lo que generaría un super array o colección de arrays que luego pueden ser recorridos con ciclos igualmente

bueno, espero alguna solucione el asunto
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #4 (permalink)  
Antiguo 09/08/2010, 20:19
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Evitar repetir registros INNER JOIN

Cita:
no se si exista alguna manera de evitar que se repitan los nombres de sucursal.
No, porque lo que devuelve es una tabla de datos donde cada registro contiene los valores que cumplen las condiciones dadas.
El problema visual que te representa la repetición del mismo dato en la misma columna para cada condición distinta (diferentes servicios) no es algo que deba resolver la base de datos sino la interfase de usuario, esto es, lo tienes que resolver en el formulario usando programación PHP, en tu caso.
MySQL te devuelve los datos pedidos. El cómo los presentes es tú problema.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 09/08/2010, 23:36
 
Fecha de Ingreso: diciembre-2005
Mensajes: 201
Antigüedad: 18 años, 4 meses
Puntos: 2
Pregunta Respuesta: Evitar repetir registros INNER JOIN

Hola muchas gracias por responder.
Tenies razon me repite los nombres de sucursal por que existe un servicio diferente asignado a esa sucursal, por eso no hay manera de evitar que se repitan los nombres de sucursal.

en cuanto a las sugerencias de agregar group by, distinc,alias, y crear dos consultas por php es algo que ya he intentado. muchas gracias por sus sus sugerencias en verdad aprecio su ayuda.

pero no se como deba hacerlo no se si tengan alguna sugerencia de como hacerlo en php. porque la verdad tengo un post en el foro de php

me an ayudado a crear un array pero ese array tambian guarda los resultados repetidos y cuando lo imprimo ps me sale el mismo resultado que cuando hago el query en mi base de datos.

es veradd debe resolverse en interface de usuario pero no se la veradd como.Le he dado mil vueltas al asunto y no doy con la solucion. alguien me podria dar una sugerencia??

aqui les dejo el link del post que les comento es el mismo problema pero quise venir aqui para ver si habia alguna solucion via Mysql


Última edición por sagitariosTheBest; 09/08/2010 a las 23:42
  #6 (permalink)  
Antiguo 09/08/2010, 23:39
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Evitar repetir registros INNER JOIN

bueno, en ese caso, respondo en el de php
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Etiquetas: join, registros, repetir
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:24.