Ver Mensaje Individual
  #9 (permalink)  
Antiguo 08/09/2008, 02:02
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Que estoy haciendo mal??

No soy técnico Sensorium, pero te diré mi opinión. No veo problema realmente. Lo que estabas haciendo era un join entre tres tablas que realmente tú no querías unir: el OR sólo te servía para multiplicar más: por eso te salían multiplicados los datos.
En realidad, que yo sepa, para esa estructura tenías dos opciones: adaptar una tabla para poder meter los datos de contactos y organizaciones, con un campo que las identificara: 0 para contactos y 1 para organizaciones. Sé que se pierde espacio y que tendrás usar nombres de campos que te sirvan para ambos y adaptar algunos contenidos, pero en realidad ya lo tienes hecho, pues los campos se parecen mucho por lo que veo en tus consultas. Problema: pierdes espacio de almacenamiento si contactos tiene un campo que no tenga organizaciones y viceversa, tendrás que contar con ese campo y quedará null, vacío o algún otro valor por defecto, para el otro. Ventaja: sólo una consulta, y para distinguir uno de otro sólo tienes que poner en la condición de la consulta que sea igual a 0 ó 1 el campo que sirve como identificador de contactos y organizaciones. Podrías además, usar un id numérico autoincrementable, porque imagino que ahora tu identificador será de texto, dado que si es numérico podrían darse coincidencias y te sacaría datos repetidos (era mi principal temor, aunque podrías resolverlo con un rango distinto para cada tabla, usando letras y números, etc.).
Lo otro, lo que has hecho, puede seguir funcionando, pero para cada consulta en la que quieras buscar contactos y organizaciones, tendrás que hacer una consulta de union (es decir, dos consultas en una): si no son muchas, tampoco le veo mucho problema.
Es lo que te puedo decir, porque me falta saber si esas tablas se usan en otras relaciones con otras tablas y tienes muchos datos de organizaciones incluidos en campos sin correspondencia en contactos y viceversa. Tienes que ver lo que más te conviene, y yo sólo veo la punta del iceberg. Pero eso es lo que opino de lo que veo.
En resumen, que si contactos y organizaciones son entidades distintas con atributos propios, déjalo como lo tienes; en caso contrario, haz de ellas una entidad de la que uno de sus atributos sea ser contactos u organización. ¿Cómo lo sabrás? Si contactos y organizaciones hacen lo mismo, reciben órdenes de trabajo, etc., siempre, podrás hacer de ellas una única entidad.

Última edición por jurena; 08/09/2008 a las 03:25