Foros del Web » Programando para Internet » PHP »

Relaciones de tablas.

Estas en el tema de Relaciones de tablas. en el foro de PHP en Foros del Web. Hola, espero que esten bien. Tengo la siguiente pregunta. Como hago para relacionar tablas y obtener el siguiente resultado. Explico, tengo una tabla que se ...
  #1 (permalink)  
Antiguo 16/10/2012, 20:49
 
Fecha de Ingreso: octubre-2012
Ubicación: Caracas, Venezuela
Mensajes: 31
Antigüedad: 11 años, 6 meses
Puntos: 0
Relaciones de tablas.

Hola, espero que esten bien.
Tengo la siguiente pregunta.
Como hago para relacionar tablas y obtener el siguiente resultado.
Explico, tengo una tabla que se llama rock, los campos son id, artista y album.
Tengo otra tabla generos, con los campos, id y genero.
Un artista es de tres generos y otro de tres generos tambien y asi sucesivamente o cuatro.
Lo que quiero es listar por ejemplo, korn=Nu Metal, Metal Alternativo y Metal Industrial.
Marilyn Manson= Metal Alternativo, Heavy Metal y Metal Industrial.
Ejemplos son esos que mencione, quiero por medio de un while, obtener los generos de un artista.
Tengo idea, pero no lo veo muy claro.
Se relacionar pero el bucle no lo se hacer.
Si es posible explicarme con las tablas en mysql y sus relaciones, mas el codigo en php, para yo luego analizarlo, entenderlo y adaptarlo a lo mio, si es posible listar los campos, id, album, artista, genero. Luego yo me encargo de insertar, modificar y eliminar. Si no puedo le consulto. Pero por favor ayudenme. Porque pedi ayuda y no me ayudaron nada, con relacion a otro tema.
Y un amigo, que me hiba ayudar, no ha podido no se porque y me preocupa que paso, porque no responde mis mensajes, lo conoci por aqui en este foro.
Este foro es buenisimo, pero mi ultimo tema que coloque aqui, pidiendo ayuda, me dejaron sin ayudarme nada.
Gracias por todo, saludos y espero su respuesta.
Quiero aprender y yo se que hay personas aqui muy buenas programando, no me decepcionen por favor, tranquilo, hasta pronto, hablamos.
  #2 (permalink)  
Antiguo 16/10/2012, 22:35
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Relaciones de tablas.

ROCK
ID - ARTISTA - ALBUM

GENERO
ID - GENERO -

con estos datos no podes obtener nigún artista, no tenes datos que se relacionen entre las tablas.

Podrías hacer algo como
ROCK
ID - ARTISTA - ALBUM - ID_GENERO

donde ID_GENERO sea igual a una clave foránea de el atributo ID de la tabla GENERO
entonces

Código SQL:
Ver original
  1. SELECT r.artista FROM rock r, genero g WHERE r.id_genero = g.id AND g.genero = "nu metal"

Clave foránea por si no sabes significa que todos los valores para ese atributo están también SIEMPRE en la tabla de la cual pertenece, en los valores para el atributo ID en este caso

"Quiero aprender y yo se que hay personas aquí muy buenas programando, no me decepcionen por favor, tranquilo, hasta pronto, hablamos."

hay personas buenas programando y buena gente también, luego están los que programan maso menos como yo un tipo que no tiene mucha experiencia, y etc etc etc, acá siempre te van a ayudar, siempre y cuando respetes algunas cosas.
-No hacemos código por nadie.
-Intenta ser claro con lo que presisas, con tus problemas de código
-Si tenes problemas relacionado a alguna parte de tu código, no hagas como hacen varios que preguntan pero no muestran su código para que veamos que están haciendo mal.
-Siempre que postees código trata de usar la herramienta Highlight para que nuestros ojos no lloren y se desangren.
-etc

Última edición por rodrigo791; 16/10/2012 a las 22:56
  #3 (permalink)  
Antiguo 16/10/2012, 23:11
 
Fecha de Ingreso: octubre-2012
Ubicación: Caracas, Venezuela
Mensajes: 31
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Relaciones de tablas.

Hola, gracias por responder, te explico:
Tengo:

Musica:

id_m album artista
1 MA MM
2 AS MM
3 K3 Korn

Generos:

id_g id_m genero
1 1 Metal Alternativo
2 1 Heavy Metal
3 3 Nu Metal


LISTADO DE REGISTRO

Album Artista Generos
MA MM Metal Alternativo
MA MM Heavy Metal
K3 Korn Nu Metal

Primero, como hago para relacionar AS MM con un genero, por ejemplo, de esta manera creo que no se puede o bueno yo no se, por eso pregunto, creo que estoy relacionando mal o se hace de otra manera.
Segundo, Korn es Metal Alternativo, ejemplo, como hago.
No se pero me parece que yo no se relacionar bien o por este metodo no es y es por otro.
Quiero como resultado final.
MM------------>MA, HM y NM
Korn----------->NM y MA

Me dijeron que de la forma como lo tengo que es otra, no es la mas efeciente y que tenia que hacer otras tablas y relacionarlas, ademas con un while obtendria todos los generos de Marilyn Manson y todos los generos de Korn.
Como hago eso???????????
Gracias por tratar de ayudarme, espero tu respuesta, saludos.
Espero haberme explicado, cualquier cosa me dices. Hablamos.
  #4 (permalink)  
Antiguo 16/10/2012, 23:19
 
Fecha de Ingreso: octubre-2012
Ubicación: Caracas, Venezuela
Mensajes: 31
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Relaciones de tablas.

Perfecto, perdon, pense que todos sabian programar muchisimo, lo siento, en serio, tranquilo no pasa nada, yo se programar poco tambien estoy aprendiendo, programacion web, se de redes y soporte tecnico, pero programacion web, mas o menos, no hay problema, tu me ayudas como puedas, gracias y lo siento.

Código:
<?php 


require ("funciones2.php");
$idc = conectar();
$sql = "select album, artista, genero from musica join generos on musica.id_m=generos.id_m";

$res = ejecutar ($sql, $idc);


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Sistema</title>
<link href=".css" rel="stylesheet" type="text/css" />
</head>

<body>


<table width="1019" height="79" align="center"  class="color1" id="Listar">
<caption>
<br />
<br />
LISTADO DE REGISTRO<br />
<br /></caption>
  <tr>
  
    <th width="207" align="center">Album</th>
    <th width="172" align="center">Artista</th>
   
    <th width="275" align="center">Generos</th>
   
   
   
  </tr>


 
  <?php 
  $total = totalRegistros($res);
  for ($i=0; $i<$total; $i++) {
	  $fila = getRegistro($res);
  ?>
   <tr>
  
    <td align="center"><?php echo $fila['album']; ?></td>
    
    <td align="center"><?php echo $fila['artista']; ?></td>
  
 
   <td align="center"><?php echo $fila['genero']; ?></td>
 

  <?php } ?>
  
</table>
</body>
</html>
<?php 
cerrar ($idc);
?>
  #5 (permalink)  
Antiguo 17/10/2012, 07:31
 
Fecha de Ingreso: noviembre-2010
Mensajes: 62
Antigüedad: 13 años, 5 meses
Puntos: 11
Respuesta: Relaciones de tablas.

Para relacionar 2 tablas siempre tienen que tener un campo en comun:

Tabla rock:
id
artista
album
id_generos


Tabla generos
id
genero

Como podes ver, en la tabla "rock" agregue un campo "id_generos" que va a contener el id correspondiente de la tabla "generos", de esta manera estas relaciondo la tabla rock con la tabla generos.
Pero hay un inconveniente, vos queres relacionar 3 o cuatro registros de la tabla generos, por lo tanto, en el caso que cada artista pertenesca de 1 a 3 generos podrias hacer esto en la tabla "rock":

Tabla rock:
id
artista
album
id_generos1
id_generos2
id_generos3

De esta manera la tabla "rock" va a estar relacionada a 3 registros de la tabla "generos"

Ejemplo: Agregas un artista a la tabla rock, seleccionas los generos, cada uno de estos generos tienen un id distinto, por lo tanto el id de cada genero se va a almacenar en los id_generos1, id_generos2, id_generos3.
  #6 (permalink)  
Antiguo 17/10/2012, 09:08
 
Fecha de Ingreso: octubre-2012
Ubicación: Caracas, Venezuela
Mensajes: 31
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Relaciones de tablas.

Hola grassofabian, gracias por responder mi pregunta, espero que estes bien, te entiendo perfectamente, sabes que tambien lo habia hecho asi como dices, pero tengo otra pregunta, tu sabes como obtener los generos de un artista por medio de un bucle while, es que me lo mencionaron por este foro, pero mi amigo no me ha respondido, no entiendo porque, por eso tube que plantiar este tema, espero tu respuesta y hablamos, saludos y gracias. Hasta luego.
  #7 (permalink)  
Antiguo 17/10/2012, 09:29
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Relaciones de tablas.

Vos tenes que empezar por acá http://www.php.net/manual/es/index.php

ahí está tu problema

si usas mysql, vas a tener que usar funciones como mysql_query, mysql_fetch_assoc o fetch_array o fetch_row como quieras vos de esas 3.
Código PHP:
Ver original
  1. while(mientras existan filas){
  2. "muestro lo que tengo que mostrar"
  3. }

fijate en el manual, estas 3 funciones que te dije a lo ultimo, van a haber ejemplos

Etiquetas: mysql, 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 15:05.