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

Registros distintos de una misma tabla

Estas en el tema de Registros distintos de una misma tabla en el foro de Mysql en Foros del Web. Hola a todos hace muy poco que me enganché con esto de mysql y me encanta!!! Resulta que me puse a preparar 8n catálogo de ...
  #1 (permalink)  
Antiguo 25/01/2008, 13:30
 
Fecha de Ingreso: febrero-2004
Mensajes: 134
Antigüedad: 20 años, 2 meses
Puntos: 0
Registros distintos de una misma tabla

Hola a todos hace muy poco que me enganché con esto de mysql y me encanta!!!
Resulta que me puse a preparar 8n catálogo de películas para un videoclub y me encuntré con este problema.
primeri hice una tabla de peliculas

donde tengo
id
titulo
sinopsis
id_director
id_actor
primary key (id)

despues una de directores

codigo
director
primary key(codigo)

mas luego actores

codigo
actor
primary key(codigo)

pido un select?

select titulo, sinopsis, director, actor
from peliculas as p
join director as d
on d.codigo=p.id_director
join actor as a
on a.codigo=p.id_actor;

anda joya

busqueda por actor?

select titulo, sinopsis, director, actor
from peliculas as p
join director as d
on d.codigo=p.id_director
join actor as a
on a.codigo=p.id_actor
where a.actor like "%Pacino%";

Estupendo...me consideraba un genio...hasta que me di cuenta que pueden ir varios actores en una pelicula!!!!

Se me ocurrió


id
titulo
sinopsis
id_director
id_actor
id_actor2
primary key (id)

Y ahí me quedé....no se me ocurre como cargar ni unir id_actor2...probé con


select titulo, sinopsis, director, actor, actor
from peliculas as p
join director as d
on d.codigo=p.id_director
join actor as a
on a.codigo=p.id_actor
and a.codigo=p.id_actor2;


y nada porfi si alguien puede ayudarme desde ya les estoy mas que agradecido...un gran abrazo foreros!!!!
  #2 (permalink)  
Antiguo 26/01/2008, 11:05
 
Fecha de Ingreso: julio-2005
Mensajes: 39
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: Registros distintos de una misma tabla

Hola, soy novato en esto, pero creo que la mejor solución sería crear otra tabla más.

Tabla películas (id, titulo,sinopsis)
Tabla actores (id, nombre)
Tabla actores por película (idactor, idpelicula)

y la consulta

select *
from peliculas as p
LEFT JOIN actoresporpelicula as app ON p.id=app.idpelicula
LEFT JOIN actores as a ON app.idactor=a.id
where a.actor like "%Pacino%";

El caso es que con los directores deberías hacer lo mismo, porque tamién hay películas codirigidas. Y ahi si que me pierdo porque tendrías que hacer otro par de LEFT JOIN para directoresporpelicula y directores en la misma consulta. A ver si alguien puede completar como sería la consulta en ese caso.

Espero que te sirva
  #3 (permalink)  
Antiguo 26/01/2008, 12:18
 
Fecha de Ingreso: julio-2005
Mensajes: 39
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: Registros distintos de una misma tabla

Me respondo a mi mismo.

Para los directores bastaría con hacer lo mismo. Despues de los LEFT JOIN de actores por pelicula y actores vendrian los de directoresporpelicula y directores.

Quizá haya alguna forma mejor de hacer todo esto, pero esa es la que yo conozco asi que lo dicho: espero que te sea útil. Ya nos contarás.
  #4 (permalink)  
Antiguo 28/01/2008, 08:42
 
Fecha de Ingreso: febrero-2004
Mensajes: 134
Antigüedad: 20 años, 2 meses
Puntos: 0
Re: Registros distintos de una misma tabla

Muchas gracias davidcelta!!!
Ya me había imaginado el usar una tabla de normalización pero no me daba cuenta como...ahora lo que me pasa es que me repite la peli no se si estoy haciendo mal la query o que..por ej:


select *
from peliculas as p
LEFT JOIN actorxpeli as app ON p.codigo=app.peli_id
LEFT JOIN actor as a ON app.actor_id=a.codigo;

y me sale algo asi

Cita:
codigo titulo id_director sinopsis codigo actor_id peli_id codigo actor

1 El Padrino 2 Es de un cholo que manda a matar a todos loe que l... 1 2 1 2 Robert Deniro
1 El Padrino 2 Es de un cholo que manda a matar a todos loe que l... 2 2 1 2 Robert Deniro
1 El Padrino 2 Es de un cholo que manda a matar a todos loe que l... 4 1 1 1 Al Pacino
1 El Padrino 2 Es de un cholo que manda a matar a todos loe que l... 7 3 1 3 Jack Nicholson
1 El Padrino 2 Es de un cholo que manda a matar a todos loe que l... 10 4 1 4 Cameron Diaz
Estuve usando el distint pero nome salen los actores encolumnados uno al lado del otro, que calculo que es como debería mostrarse;

select distinct titulo
from peliculas as p
LEFT JOIN actorxpeli as app ON p.codigo=app.peli_id
LEFT JOIN actor as a ON app.actor_id=a.codigo;

y solo me muestra las pelis....claro que no estoy pidiendo otra cosa je je..es que no se como hacerlo...mil gracias anticipadas nuevamente!!!
  #5 (permalink)  
Antiguo 01/02/2008, 08:31
 
Fecha de Ingreso: febrero-2004
Mensajes: 134
Antigüedad: 20 años, 2 meses
Puntos: 0
Re: Registros distintos de una misma tabla

Estuve investigando que se puede duplicar una tabla...tendré que duplicar la tabla actores y hacer un select con distintc para tener otra columna de actores?
Otra cosa que estuve probando es poner actor 1 actor2 actor3 en la misma tabla de películas...es recomendable? o me conviene tener la tabla actores por separado?
Muchas gracias adelantada por su eterna ayuda!!!
  #6 (permalink)  
Antiguo 04/02/2008, 11:37
 
Fecha de Ingreso: febrero-2004
Mensajes: 134
Antigüedad: 20 años, 2 meses
Puntos: 0
Re: Registros distintos de una misma tabla

Miren lo que se me ocurrió!!! igual es una truchada....porque en algunos casos me ponen 3 actores y me revientan
Pero estoy un poco mas cerca.

Cita:
SELECT titulo, max( actor ) , min( actor )
FROM peliculas AS p
LEFT JOIN actorxpeli AS app ON p.codigo = app.peli_id
LEFT JOIN actor AS a ON app.actor_id = a.codigo
GROUP BY titulo;
Y me devuelve...

Cita:
+--------------------------------------------------------------+
| titulo | max( actor ) | min( actor ) |
+--------------------------------------------------------------+
| El graduado | Jack Nicholson | Cameron Diaz |
+--------------------------------------------------------------+
| El Padrino | Robert Deniro | Al Pacino |
+--------------------------------------------------------------+
| El Perfume | Jack Nicholson | Al Pacino |
+--------------------------------------------------------------+
| Heroe | NULL | NULL |
+--------------------------------------------------------------+
| La mascara | Robert Deniro | Al Pacino |
+--------------------------------------------------------------+
| La mosca | NULL | NULL |
+-------------------------------------------------------------+


Mil gracias como siempre
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 01:06.