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

Duda sobre asociaciones

Estas en el tema de Duda sobre asociaciones en el foro de Mysql en Foros del Web. Hola muy buenas, veran tengo estas dos tablas: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original CREATE TABLE IF NOT EXISTS equipos (   registro INT PRIMARY ...
  #1 (permalink)  
Antiguo 13/03/2010, 05:53
50l3r
Invitado
 
Mensajes: n/a
Puntos:
Duda sobre asociaciones

Hola muy buenas, veran tengo estas dos tablas:

Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS equipos
  2. (   registro INT PRIMARY KEY AUTO_INCREMENT,
  3.     nombre VARCHAR(30) NOT NULL ,
  4.     nombre_entrenador VARCHAR(35) NOT NULL,
  5.     nombre_cancha VARCHAR(30) NOT NULL,
  6.     poblacion VARCHAR(25) NOT NULL,
  7.     anio_funcdacion INT(4) NOT NULL,
  8.     anotaciones BLOB);

Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS partidos
  2. (   registro INT PRIMARY KEY AUTO_INCREMENT,
  3.     id_equipo INT NOT NULL,
  4.     resultado_equipo1 INT NOT NULL,
  5.     id_equipo2 INT NOT NULL,
  6.     resultado_equipo2 INT NOT NULL);


tengo un ejercicio que me pide que el campo id_equipo e id_equipo2 de la tabla partidos deben de ir asociadas a el campo registro de la tabla equipos

como puedo hacer eso, alguien sabe?
  #2 (permalink)  
Antiguo 13/03/2010, 08:12
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Duda sobre asociaciones

Código MySQL:
Ver original
  1. alter table partidos
  2. add constraint fk_id_equipo
  3. foreign key (id_equipo)
  4. references equipos(registro);
  5.  
  6. alter table partidos
  7. add constraint fk_id_equipo2
  8. foreign key (id_equipo2)
  9. references equipos(registro);

Con esto ya quedan relacionadas.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 13/03/2010, 08:53
50l3r
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Duda sobre asociaciones

Esque veras,tengo que hacer las siguientes consultas y nose como:

1: Partidos jugados: nombre del equipo 1,nombre del equipo 2,resultado equipo1, resultado equipo 2 ordenados por el nombre del equipo 1

2: Los campos nº total de partidos jugados(calculandolo) y nombre del equipo ordenandolo decrecientemente por el nº de partidos jugados
este es mi archivo .sql entero:

Código SQL:
Ver original
  1. CREATE DATABASE IF NOT EXISTS liga_baloncesto;
  2. USE liga_baloncesto;
  3. CREATE TABLE IF NOT EXISTS equipos
  4. (   registro INT PRIMARY KEY AUTO_INCREMENT,
  5.     nombre VARCHAR(30) NOT NULL ,
  6.     nombre_entrenador VARCHAR(35) NOT NULL,
  7.     nombre_cancha VARCHAR(30) NOT NULL,
  8.     poblacion VARCHAR(25) NOT NULL,
  9.     anio_fundacion INT(4) NOT NULL,
  10.     anotaciones BLOB)ENGINE=InnoDB;
  11.    
  12.     CREATE INDEX nombre ON equipos(nombre);
  13.    
  14. CREATE TABLE IF NOT EXISTS partidos
  15. (   registro INT PRIMARY KEY AUTO_INCREMENT,
  16.     id_equipo INT NOT NULL,
  17.     resultado_equipo1 INT NOT NULL,
  18.     id_equipo2 INT NOT NULL,
  19.     resultado_equipo2 INT NOT NULL)ENGINE=InnoDB;
  20.  
  21.    
  22. INSERT INTO equipos(nombre,nombre_entrenador,nombre_cancha,poblacion,anio_fundacion,anotaciones) VALUES("los gordis","antonio","macdonalds","santander","1995","corren poco");
  23. INSERT INTO equipos(nombre,nombre_entrenador,nombre_cancha,poblacion,anio_fundacion,anotaciones) VALUES("los flacos","miguel","augusto,no muy disgusto","santander","1991","se los lleva el viento");
  24. INSERT INTO equipos(nombre,nombre_entrenador,nombre_cancha,poblacion,anio_fundacion,anotaciones) VALUES("los chungis","mc juanca","bronze","barcelona-city","1997","les roban el bolso a las visitantes");
  25. INSERT INTO equipos(nombre,nombre_entrenador,nombre_cancha,poblacion,anio_fundacion,anotaciones) VALUES("los altos","jon lee","ies piernaslargas","barcelona-city","1996","dan con la cabeza en el aro");
  26. INSERT INTO equipos(nombre,nombre_entrenador,nombre_cancha,poblacion,anio_fundacion,anotaciones) VALUES("los gnomos","david el gnomo","ies seta","no existe","1876","el balon les aplasta");
  27. INSERT INTO equipos(nombre,nombre_entrenador,nombre_cancha,poblacion,anio_fundacion,anotaciones) VALUES("las mujeres","teresa","peluqueria","gijon","1967","les funden a todos los equpos, no las dejan participar");
  28. INSERT INTO equipos(nombre,nombre_entrenador,nombre_cancha,poblacion,anio_fundacion,anotaciones) VALUES("los hombre","marcos","trabajo","gijon","1954","siempre se escaquean para ver su propio partido en el sofa");
  29. INSERT INTO equipos(nombre,nombre_entrenador,nombre_cancha,poblacion,anio_fundacion,anotaciones) VALUES("cursis","leire","peluqueria","gijon","1945","discuten sobre quien lo tiene mas rubio");
  30. INSERT INTO equipos(nombre,nombre_entrenador,nombre_cancha,poblacion,anio_fundacion,anotaciones) VALUES("los morenos","joaquin","peluqueria","gion","1978","estan hartos de compartir cancha");
  31. INSERT INTO equipos(nombre,nombre_entrenador,nombre_cancha,poblacion,anio_fundacion,anotaciones) VALUES("los anonimos","pepe","a ti que te importa","poblacion? que?","0001","nunca se han presentado");
  32.  
  33. INSERT INTO partidos(id_equipo,resultado_equipo1,id_equipo2,resultado_equipo2) VALUES("1","30","2","40");
  34. INSERT INTO partidos(id_equipo,resultado_equipo1,id_equipo2,resultado_equipo2) VALUES("3","100","5","10");
  35. INSERT INTO partidos(id_equipo,resultado_equipo1,id_equipo2,resultado_equipo2) VALUES("2","70","3","40");
  36. INSERT INTO partidos(id_equipo,resultado_equipo1,id_equipo2,resultado_equipo2) VALUES("8","30","9","140");
  37. INSERT INTO partidos(id_equipo,resultado_equipo1,id_equipo2,resultado_equipo2) VALUES("4","160","5","10");
  38. INSERT INTO partidos(id_equipo,resultado_equipo1,id_equipo2,resultado_equipo2) VALUES("9","80","8","50");
  39. INSERT INTO partidos(id_equipo,resultado_equipo1,id_equipo2,resultado_equipo2) VALUES("2","80","7","140");
  40. INSERT INTO partidos(id_equipo,resultado_equipo1,id_equipo2,resultado_equipo2) VALUES("6","30","2","40");
  41. INSERT INTO partidos(id_equipo,resultado_equipo1,id_equipo2,resultado_equipo2) VALUES("5","350","7","40");
  42. INSERT INTO partidos(id_equipo,resultado_equipo1,id_equipo2,resultado_equipo2) VALUES("6","30","10","0");


¿me podeis ayudar?
  #4 (permalink)  
Antiguo 13/03/2010, 09:32
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Duda sobre asociaciones

Cita:
Partidos jugados: nombre del equipo 1,nombre del equipo 2,resultado equipo1, resultado equipo 2 ordenados por el nombre del equipo 1
Código MySQL:
Ver original
  1. mysql> select e1.nombre equipo1,p.resultado_equipo1 resultado1, e2.nombre equipo2, resultado_equipo2 resultado2 from partidos p inner join equipos e1 on p.id_equipo=e1.registro inner join equipos e2 on p.id_equipo2=e2.registro order by e1.nombre;
  2. +-------------+------------+--------------+------------+
  3. | equipo1     | resultado1 | equipo2      | resultado2 |
  4. +-------------+------------+--------------+------------+
  5. | cursis      |         30 | los morenos  |        140 |
  6. | las mujeres |         30 | los anonimos |          0 |
  7. | las mujeres |         30 | los flacos   |         40 |
  8. | los altos   |        160 | los gnomos   |         10 |
  9. | los chungis |        100 | los gnomos   |         10 |
  10. | los flacos  |         70 | los chungis  |         40 |
  11. | los flacos  |         80 | los hombre   |        140 |
  12. | los gnomos  |        350 | los hombre   |         40 |
  13. | los gordis  |         30 | los flacos   |         40 |
  14. | los morenos |         80 | cursis       |         50 |
  15. +-------------+------------+--------------+------------+
  16. 10 rows in set (0.00 sec)
  17.  
  18. mysql>

ya te paso la 2.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 13/03/2010, 09:47
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Duda sobre asociaciones

la 2

Código MySQL:
Ver original
  1. mysql> select e.nombre,count(t1.id_equipo) total_partidos from equipos e inner join (select id_equipo from partidos union all select id_equipo2 from partidos)t1 on e.registro=t1.id_equipo group by e.nombre order by e.nombre;
  2. +--------------+----------------+
  3. | nombre       | total_partidos |
  4. +--------------+----------------+
  5. | cursis       |              2 |
  6. | las mujeres  |              2 |
  7. | los altos    |              1 |
  8. | los anonimos |              1 |
  9. | los chungis  |              2 |
  10. | los flacos   |              4 |
  11. | los gnomos   |              3 |
  12. | los gordis   |              1 |
  13. | los hombre   |              2 |
  14. | los morenos  |              2 |
  15. +--------------+----------------+
  16. 10 rows in set (0.00 sec)
  17.  
  18. mysql>

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #6 (permalink)  
Antiguo 21/03/2010, 08:40
50l3r
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Duda sobre asociaciones

siento la tardanza huesos52, me sirvio todo a la perfecion muchisimas gracias

Etiquetas: Ninguno
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 22:25.