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

BD - Claves y relaciones

Estas en el tema de BD - Claves y relaciones en el foro de Mysql en Foros del Web. Hola a todos!, esta es mi primera vez en el foro y les voy a contar el motivo que me ha traido aqui. Necesito armar ...
  #1 (permalink)  
Antiguo 07/03/2012, 10:38
 
Fecha de Ingreso: marzo-2012
Mensajes: 102
Antigüedad: 12 años, 1 mes
Puntos: 1
BD - Claves y relaciones

Hola a todos!, esta es mi primera vez en el foro y les voy a contar el motivo que me ha traido aqui.

Necesito armar las relaciones para una base de datos. Es una prueba para web para un estudio, pero tengo dudas respecto a claves y a relaciones en si.
Tengo 3 tablas, una para clientes, otra para campañas y otra para cada trabajo.

Clientes: id, nombre, logo (ruta), mostrar, posicion (para ordenar como apareceran).

Campañas: id, id del cliente, titulo, descripcion, mostrar, posicion (en caso que haya muchas campañas del cliente y quieran ordenarse).

Trabajos: id, id del cliente, id de la campaña, categoria (grafica, motion, etc), titulo, ruta, mostrar.

Cada id es clave principal en su tabla, y los id de otras tablas, claves foraneas.. bien?

ahora, mi consulta es.. yo cree una columna mostrar en caso de no querer mostrar el cliente/campaña/trabajo para no tener que eliminarlo.
Pero en base a las relaciones, podrian suceder las siguientes posibilidades:

Si se oculta el cliente, la campaña y los trabajos tampoco deberian verse.
Si la campaña es lo que se oculta, los trabajos no se verian pero si el cliente.
Si un trabajo decide no mostrarse, el cliente y la campaña no deberia verse afectado.

Cual es la relacion aqui?

gracias de antemano por cualquier aporte!
saludos a todos!
  #2 (permalink)  
Antiguo 07/03/2012, 17:59
Avatar de calakra  
Fecha de Ingreso: septiembre-2009
Mensajes: 182
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: BD - Claves y relaciones

Hola.

Lo que tu tienes no es un problema muy dificil, simplemente tiene que ver con logica en los filtros que uses y el uso de left join o inner join dependiendo lo que necesites, en tu caso el uso de left join sera necesario por lo que veo a simple vista.

Te sugiero que leas y entiendas como funcionan los joins ya que una vez que los entiendes te facilitan la vida increiblemente.

Saludos
  #3 (permalink)  
Antiguo 12/03/2012, 22:15
 
Fecha de Ingreso: marzo-2012
Mensajes: 102
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: BD - Claves y relaciones

Calakra gracias realmente por tu respuesta..

Estuve leyendo sobre inner y left join. Estoy intentando usarlos incluyendo también el uso de group by en base a los id de las campañas.

Mañana podré subir la consulta para que la veas, ya que no logro ver adonde esta mi error conceptual (ese parece ser el problema aun)

Saludos!
  #4 (permalink)  
Antiguo 13/03/2012, 07:33
 
Fecha de Ingreso: marzo-2012
Mensajes: 102
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: BD - Claves y relaciones

Hola calakra!
Esta es la consulta de la que te hablaba..

Código:
$fwk_query = mysql_query("SELECT campanias.idCamp, campanias.idCliente, campanias.titulo, campanias.mostrar,
	clientes.idCliente AS idTablaClientes, clientes.cliente, trabajos.idCamp, trabajos.titulo as titleTrabajo,
	COUNT(*) as cantidad
	FROM campanias
	LEFT JOIN trabajos ON campanias.idCamp = trabajos.idCamp
	INNER JOIN clientes ON campanias.idCliente = clientes.idCliente
	GROUP BY campanias.idCamp") or die(mysql_error());


while($my_camps = mysql_fetch_array($query)) {
echo "<div class='mostrar column centered'><input type='checkbox' id='nov_".$my_camps['idCamp']."' class='hideShow' value='1' ";
	if($my_camps['mostrar'] == 1): echo "checked "; endif;	
echo "/></div>";
echo '<div class="tituloCamp column">'.$my_camps["titulo"].'</div>';
if($my_camps["cantidad"] != null) {
	echo '<div class="qImagenCamp column">'.$my_camps["cantidad"].'</div>';
} else {
	echo '<div class="qImagenCamp column">0</div>';
}
echo '<div class="clienteCamp column">'.$my_camps["cliente"].'</div>';
}
Consultando a 3 tablas (campañas, clientes y trabajos) intento obtener:

- La campaña (su id, si se muestra o no, cliente asociado, titulo) junto con los trabajos que tenga asociados.
- En el caso de tener trabajos asociados, simplemente listar la cantidad que posee de ellos.

El inconveniente, es que con las consultas que vengo intentando, aquellas campañas que no tienen trabajos no aparecen, o bien, si lo hago como arriba "GROUP BY campanias.idCamp" me muestra todas y para las que no tienen trabajo me pone cantidad 1 al ser 1 idCamp el encontrado..

no se si se entiende, yo mismo ya estoy mareado..
  #5 (permalink)  
Antiguo 15/03/2012, 07:45
 
Fecha de Ingreso: marzo-2012
Mensajes: 102
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: BD - Claves y relaciones

bueno, he podido solucionarlo..

Lo que hice fue utilizar un left join para ambas tablas relacionadas, y ademas el group by, lo hice tanto sobre el id de las campañas como de los trabajos (no sabia que podia aplicarse sobre mas de 1 criterio)..

asique gracias de todos modos,
saludos!

Etiquetas: bd, claves, relaciones, tabla
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 12:44.